Τριαδική σχέση Πολλά προς πολλά

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

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

Απάντηση
Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Τριαδική σχέση Πολλά προς πολλά

Δημοσίευση από majuranus » 22 Ιουν 2010 09:05

Καλημέρα σε όλους/ες!

Έχω μια βάση με τρεις πίνακες:

Σεμινάρια: με διάφορα πεδία και κύριο κλειδί το πεδίο id_seminar

ΧΡΗΣΤΕΣ: με διάφορα πεδία και κύριο κλειδί το πεδίο id_user

Έφτιαξα και ενα τρίτο πίνακα ο οποίο λέγετε Συμμετοχές
οπού έχει 3 πεδία id_participations(κυρίως κλειδί) id_seminars(ξένο κλειδί που θα σχετίζεται με τον πίνακα seminars) και id_user (ξένο κλειδί ππου θα συσχετίζεται με τον πίνακα users)

Αν λοιπόν έχω ένα σεμινάριο όπου το id_seminar=3 και ένα χρήστη όπου id_user=2

στον τρίτο πίνακα αν έχω
id_participants=1
id_seminar=3
id_user=2

Θα ξέρω ποιος παρακολουθεί το κάθε σεμινάριο. Σωστά?

το μόνο που μου λείπει είναι η Mysql εντολή που κάνει την συσχέτιση (Τώρα που το γράφω μου ήρθε ιδέα να προσπαθήσω να παράσχω κώδικα sql μέσω Access αλλά δεν ξέρω αν γίνεται)

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Τριαδική σχέση Πολλά προς πολλά

Δημοσίευση από majuranus » 22 Ιουν 2010 09:26

Έγραψα αυτό , το οποίο το πήρα από την access αλλά δεν παίζει στην Mysql (λογικό μου φαίνεται)


SELECT users.id_user, seminars.title, * FROM users INNER JOIN
(seminars INNER JOIN participants ON seminars.id_seminar = participants.id_seminar) ON users.id_user = participants.id_user
WHERE (((users.id_user)=$_GET[show]));

Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

Τριαδική σχέση Πολλά προς πολλά

Δημοσίευση από xultimatex » 22 Ιουν 2010 11:18

Εξήγησε μας λίγο καλύτερα τί ακριβώς θέλεις να κάνει το query στημ mysql.

Να εμφανίζει για ένα άτομο, τί παρακολουθεί;
Να εμφανίζει για ένα σεμινάριο από ποιους παρακολουθείται;
Να εμφανίζει για όλα τα σεμινάρια, ποιοι το παρακολουθούν;
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Τριαδική σχέση Πολλά προς πολλά

Δημοσίευση από majuranus » 22 Ιουν 2010 11:21

ναι ακριβώς! το πρώτο το πέτυχα νομίζω βάζοντας αυτό to query

"SELECT * FROM participants,seminars WHERE participants.id_user=$_GET[show] AND participants.id_seminar=seminars.id_seminar"

opou $_GET[show] είναι ένα id ώστε να βλέπω του συγκεκριμένου χρήστη τα σεμινάρια που παρακολουθεί.

Να εμφανίζει για όλα τα σεμινάρια ποιοι και πόσοι τα παρακολοθούν

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Τριαδική σχέση Πολλά προς πολλά

Δημοσίευση από dva_dev » 22 Ιουν 2010 11:31

Οταν έχεις περισσότερους από δύο πίνακες μην χρησιμοποιείς * χύμα, βάλε καλύτερα τα πεδία που θέλεις. Αν τώρα θέλεις οπωσδήποτε να βάλεις * πρέπει να του πεις και από ποιόν πίνακα θέλεις όλα τα πεδία.
Π.χ.

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

select f1, f2, table1.* from table1 inner join table2 ...

Απάντηση

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

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

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