Katman21 Δημοσ. 28 Δεκεμβρίου 2013 Δημοσ. 28 Δεκεμβρίου 2013 Γεια σας παιδιά και καλές γιορτές να έχετε,Αντιμετωπίζω εδώ και 2-3 ημερες ένα πρόβλημα στο θέμα τις συσχέτισης με κάποιους πίνακες που έχω ορίσει: Όλα ωραία και καλά "πιστεύω" μέχρι που θέλω μέσα από τον PHP κώδικα που έχω φτιάξει να μου βγάζει τα comments που έχουν καταχωρηθεί σε ένα συγκεκριμένο status και όχι να μου βγαίνει σε όλα τα status που στην ουσία αφορά μονο ένα status το συγκεκριμένο comment!Π.χ του λέω: $sql = "SELECT `status`.`S_id`, `status`.`Description`, `status`.`video_url`, `status`.`Date`, `status`.`Firstname`, `comments`.`Comment`, `comments`.`Com_date`, `comments`.`Firstname` FROM `comments`, `status`"; Εδώ είμαστε τέλεια δουλεύει κανονικά αλλα υπάρχει ακόμα το πρόβλημα, όταν όμως του δηλώνω: WHERE S_id = '$S_id' Δεν βγάζει μετά τίποτα γιατί είναι στάνταρ λάθος..δεν θυμάμαι και δεν μπορώ να καταλάβω πως πρέπει να βγει θα χαιρόμουν αν βοηθούσατε σε αυτό!Ευχαριστώ..
lion2486 Δημοσ. 28 Δεκεμβρίου 2013 Δημοσ. 28 Δεκεμβρίου 2013 δηλαδή θες να κάνεις $sql = "SELECT `status`.`S_id`, `status`.`Description`, `status`.`video_url`, `status`.`Date`, `status`.`Firstname`, `comments`.`Comment`, `comments`.`Com_date`, `comments`.`Firstname` FROM `comments`, `status` WHERE S_id = '$S_id'"; ;;; κάνει ένα print_r($S_id); την έχεις ορίσει τη μεταβλητή σε κάτι; Αν ναι αυτό που έχει υπάρχουν αποτελέσματα στη βάση σου; Υ.Γ.: Φαντάζομαι στη WHERE σου θα θέλεις να βάλεις και τη συνθήκη comments.S_id = status.S_id για να κάνει τη συνένωση με το κλειδί σου!
Katman21 Δημοσ. 28 Δεκεμβρίου 2013 Μέλος Δημοσ. 28 Δεκεμβρίου 2013 Ναι την έχω βάλει ήδη την συνθήκη comments.S_id = status.S_id αλλα μου βγάζει μονο όσα έχουν σχόλια..
defacer Δημοσ. 29 Δεκεμβρίου 2013 Δημοσ. 29 Δεκεμβρίου 2013 Πρέπει να μάθεις ποιά είναι τα διάφορα είδη join που γίνονται στους πίνακες, ειδικά το left outer join που είναι σούπερ χρήσιμο και αυτό που κάνει και σ' αυτήν εδώ την περίπτωση. Ρίξε μια ματιά εδώ αλλά θέλει να το ψάξεις μόνος σου. Το join που ζητάς είναι SELECT ... FROM status s LEFT JOIN comments c ON s.S_id = c.S_id WHERE s.S_id = 123456 Από την άλλη δεν καταλαβαίνω γιατί κάνεις join έτσι κι αλλιώς, αφού ξέροντας το S_id μπορείς να πάρεις τα comments μόνο κάνοντας query έναν πίνακα. Δε μπορείς να πάρεις βέβαια τα άλλα στοιχεία του status, αλλά αυτό μάλλον είναι καλό -- σου ακούγεται σωστή χρήση το να πάρεις Ν rows (μία για κάθε comment) και τα στοιχεία αυτά να είναι ίδια copy paste σε κάθε μία από αυτές; Απλά κάνε ένα δεύτερο query στο status και πάρτα ξεχωριστά.
Katman21 Δημοσ. 30 Δεκεμβρίου 2013 Μέλος Δημοσ. 30 Δεκεμβρίου 2013 SELECT ... FROM status s LEFT JOIN comments c ON s.S_id = c.S_id WHERE s.S_id = 123456 Μπορώ να πω ότι κάτι έγινε αλλα δυστυχώς μου τα βγάζει διπλα και δεν μπορώ να καταλάβω τι φταίει.. Δηλαδή υπάρχουν τα S_id στο status 11,12 και τα βγάζει σε Output 11,12,11,12 σαν να έχουν γράψει και οι δυο χρηστες το ίδιο status αλλα στην Mysql αυτό δεν ισχύει! SELECT status.*,comments.*,users.Avatar FROM status LEFT JOIN comments ON status.S_id=comments.S_id LEFT JOIN users ON users.Avatar=users.Avatar
defacer Δημοσ. 30 Δεκεμβρίου 2013 Δημοσ. 30 Δεκεμβρίου 2013 Αυτό εδώ δεν έχει κανένα νόημα και πιθανότατα προκαλεί το πρόβλημα (δε μπορώ να είμαι σίγουρος γιατί λείπουν δεδομένα, π.χ. αυτό το Avatar column δε φαίνεται στο σχήμα που έδωσες): LEFT JOIN users ON users.Avatar=users.Avatar Νομίζω πως δεν έχεις καθαρή ιδέα του πώς δουλεύουν τα join. Φαντάζομαι πως βγαίνει το κάθε ένα 2 φορές επειδή έχεις 2 χρήστες στον πίνακα users, αν είχες 3 θα έβγαινε το κάθε ένα απο 3.
Katman21 Δημοσ. 30 Δεκεμβρίου 2013 Μέλος Δημοσ. 30 Δεκεμβρίου 2013 Πως μπορούμε να το κάνουμε να μην βγαίνει? εγώ έβαλα το Avatar για να φαίνεται και φωτογραφία του κάθε χρηστη βγαίνει κανονικά αλλα βγαίνουν διπλα όπως είπαμε..
Katman21 Δημοσ. 2 Ιανουαρίου 2014 Μέλος Δημοσ. 2 Ιανουαρίου 2014 (επεξεργασμένο) Το θέμα λύθηκε Επεξ/σία 3 Ιανουαρίου 2014 από Katman21
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα