query ανάμεσα σε 2 πίνακες

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
akism
Δημοσιεύσεις: 14
Εγγραφή: 19 Οκτ 2015 15:09

query ανάμεσα σε 2 πίνακες

Δημοσίευση από akism » 30 Μάιος 2016 16:18

Ας υποθέσουμε ότι έχουμε μία βάση με δύο πίνακες οι οποίοι έχουν σχέση μεταξύ τους.
Ο ένας πίνακας είναι ο users και ο άλλος ο products. Στον πίνακα products υπάρχουν 2 πεδία που έχουν reference στον users (first_name και last_name).
Ο users έχει στοιχεία πελατών ενώ ο products έχει στοιχεία προϊόντων και το ονομ/μο του κάθε χρήστη που το αγόρασε.
Σαν παράδειγμα:
Στον users υπάρχει ο χρήστης Όνομα Επώνυμο. Αυτός ο χρήστης έχει αγοράσει το product_1 και το product_3. Η αγορά του κάθε προϊόντος δημιουργεί μία νέα εγγραφή στον πίνακα products. Πχ
3 | product_1 | first_name | last_name
9 | product_3 | first_name | last_name

Προσπαθώ να βγάλω άκρη με ένα query το οποίο θα εμφανίζει τα στοιχεία του πελάτη από τον users και όλα τα προϊόντα που έχει αγοράσει από τον products.
Θα εκτιμούσα πολύ τη βοήθειά σας.

Ευχαριστώ.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

query ανάμεσα σε 2 πίνακες

Δημοσίευση από korgr » 30 Μάιος 2016 20:42

Τελείως λάθος αντιμετώπιση στον σχεδιασμό της βάσης
Στον πίνακα users πρέπει να έχεις πεδίο id (user ID)
και στον πίνακα products να έχεις πεδίο user_id που θα αντιστοιχεί στο ανωτέρω user ID.
Μετά είναι ένα απλό join

akism
Δημοσιεύσεις: 14
Εγγραφή: 19 Οκτ 2015 15:09

query ανάμεσα σε 2 πίνακες

Δημοσίευση από akism » 30 Μάιος 2016 21:51

:D Μη βαράς αδερφέ!!! Δεν έχω πολυ-ασχοληθεί με βάσεις
Και οι 2 πίνακες έχουν ID αλλά δεν το είχα σκεφτεί έτσι (όπου id από users >> userid στον products) αλλα μου αρέσει το σκεπτικό σου και θα το υλοποιήσω.

Σκεφτόμουν να το κάνω WHERE u.last_name = p.last_name.

Μπορείς να δώσεις ένα παράδειγμα-query με το join που αναφέρεις στο σχόλιό σου???
Σε ευχαριστώ.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

query ανάμεσα σε 2 πίνακες

Δημοσίευση από korgr » 31 Μάιος 2016 12:52

Δεν βαράω, προσπαθώ να σε προλάβω από τζάμπα δουλειά :)
Απλά έτσι βγήκε στον γραπτό λόγο...

Κατ' αρχάς ο πίνακας products πρέπει να έχει όλα τα προϊόντα του eshop
πχ id, product_name, [άλλα πεδία]
Ο πίνακας users πρέπει να έχει
πχ id, first_name, last_name
και χρειάζεσαι και ένα bridge table που θα γεφυρώνει τα products με τους users δηλαδη τα προϊοντα που παραγγελνει καποιος user
πχ πίνακας user_products με πεδία:
user_id, product_id

ένα δείγμα query με αυτούς τους πίνακες θα μπορούσε να είναι αν στην $user_id είχες το ID του user:

Κώδικας: Επιλογή όλων

select u.first_name, u.last_name, p.product_name from 
users as u, products as p, user_products as up 
where u.id = up.user_id 
and p.id = up.product_id 
and u.id='$user_id'

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες