Προβλημα με MySQL Query

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

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

Απάντηση
Argirids
Δημοσιεύσεις: 41
Εγγραφή: 17 Ιαν 2009 17:32

Προβλημα με MySQL Query

Δημοσίευση από Argirids » 15 Απρ 2009 19:38

παιδια εχω ενα προβλημα με ενα query που θελω να φτιαχω για μια εργασια που εχω...

Εχω μια μεταβλητη session που εχω κρατησει το email του χρηστη που κανει login.
Εχω αυτους τους 2 πινακες (users,friends) και θελω απο των πινακα users να μου εμφανιζει email,first_name,last_name οπου θα ειναι το users.email!=session (δηλαδη ολους εκτος το χρηστη) και απο των πινακα friends να μην υπαρχει συστηχια με τον χρηστη μεσα δηλαδη (friends.user1 != session OR friends.user2 != session).

Εγω το σκεφτηκα ετσι αλλα δεν μου βγαζει αποτελεσματα:
SELECT users.email,users.first_name,users.last_name
FROM users,friends
WHERE
user.email<>session AND
friends.user1 <> session OR friends.user2 <> session

p.s Ξερω οτι πρεπει να συνδεσω τους 2 πινακες αλλα δεν πως?
Τα fields user1,user2 κρατανε email.

Αν μπορει καποιος να με βοηθησει θα του ημουν ευγμνωμων!!!
Ευχαριστω!
Συνημμένα
tables.JPG
tables
tables.JPG (17.87 KiB) Προβλήθηκε 1686 φορές

Άβαταρ μέλους
CyberCr33p
Honorary Member
Δημοσιεύσεις: 3203
Εγγραφή: 06 Νοέμ 1999 01:00
Τοποθεσία: Αθήνα
Επικοινωνία:

Προβλημα με MySQL Query

Δημοσίευση από CyberCr33p » 15 Απρ 2009 20:47

Ψάξε για JOIN

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Προβλημα με MySQL Query

Δημοσίευση από Apostolis_38 » 16 Απρ 2009 11:53

Argirids έγραψε: SELECT users.email,users.first_name,users.last_name
FROM users,friends
WHERE
user.email<>session AND
friends.user1 <> session OR friends.user2 <> session
Αν και δεν κάνω έτσι τα select μου έχω μια απορία.
Δεν θα έπρεπε κανονικά να δίνεις και select απο τον πίνακα friends;

SELECT users.email,users.first_name,users.last_name,friends.user1,friends.user2κ.λ.π.

Επίσης, η σύνδεση πως γίνεται; με τα id;

Σου βγάζει κάποιο μήνυμα;

Argirids
Δημοσιεύσεις: 41
Εγγραφή: 17 Ιαν 2009 17:32

Προβλημα με MySQL Query

Δημοσίευση από Argirids » 16 Απρ 2009 12:05

Δν χρειαζετε γιατι δεν θελω να μου εμφανιζει αυτα τα δεδομενα. Αν το κανω ετσι με NOT EXISTS ??

SELECT users.email, users.fisrt_name, users.last_name
FROM users
WHERE users.email <> session
AND NOT
EXISTS (
SELECT user1, user2
FROM friends
WHERE users.email = friends.user1
OR users.email = friends.user2
AND friends.user1 <> sesssion
AND friends.user2 <> session
)

Μεσα στο ΝΟΤ EXISTS φτιαχνω ενα subquery για των πινακα friends.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Προβλημα με MySQL Query

Δημοσίευση από Apostolis_38 » 16 Απρ 2009 12:10

Για δοκίμασε

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

AND friends.user1 != sesssion 

Argirids
Δημοσιεύσεις: 41
Εγγραφή: 17 Ιαν 2009 17:32

Προβλημα με MySQL Query

Δημοσίευση από Argirids » 16 Απρ 2009 12:28

Ναι το ιδιο πραγμα ειναι. Βασικα το δοκιμασα και μου εμφανιζει αποτελεσματα σαν να μην διαβαζει το 2ο query. Αν δεις το attach εχει στο user1 ενα χρηστη με email "man2@test.com" που ειναι ο χρηστης που εστειλε requests στους αλλους χρηστες ( αυτους που ειναι στο user2). Αλλα σαν αποτελεσμα του query που εκανα τους εμφανιζει ολους και αυτους που υπαρχουν ειδη στο πινακα.

Δεν λειτουργει το subquery και Δν μπορω να βρω τα λαθως γιατι δεν εχω και πολλες γνωσεις σε SQL.

Εχεις καμια ιδεα πως μπορω να το κανω?
Ευχαριστω Apostolis_38!
Συνημμένα
tableFr.jpg
Table friends

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

Προβλημα με MySQL Query

Δημοσίευση από dva_dev » 16 Απρ 2009 12:37

Ο πίνακας friends στα user1 και user2 τι κρατάει (λες οτι κρατάει email, ποιανού email κρατάει?) Πως συνδέεται (τι σχέση έχουν) ο friends με το users?

Νομίζω, αν θέλεις να κρατήσεις έναν user (το email του) και μια λίστα με τους φίλους του, ότι κάτι έχεις πάρει λάθος.

Argirids
Δημοσιεύσεις: 41
Εγγραφή: 17 Ιαν 2009 17:32

Προβλημα με MySQL Query

Δημοσίευση από Argirids » 16 Απρ 2009 13:02

Κραταει μεταβλητες τυπου TEXT που ειναι τα emails των χρηστων..
Βασικα εγω θελω να φτιαξω ενα project που να κραταει τους "φιλους " του καθε χρηστη.
Ο πινακας users κραταει τους χρηστες που κανουν εγγραφη και στον πινακα friends θα κρατα το πιος ειναι φιλος με ποιον.
Το προβλημα μου ειναι το πως θα κανει search τα αλλα νομιζω που βγαζουν σωστα αποτελεσματα.
Θελω να κανει search και να μου εμφανιζει ολους τους χρηστες εκτος εκεινους που υπαρχουν ειδη στον friends ( που ειναι ειδη φιλοι η εχει γινει ειδη request). Γιαυτο πρεπει να ελεγχει και τα 2 fields (user1, user2).

Αυτο "users.email = friends.user1 OR users.email = friends.user2"
δεν συνδεει τους 2 πινακες?

Ευχαριστω!
Συνημμένα
tables.JPG
tables
tables.JPG (17.87 KiB) Προβλήθηκε 1604 φορές

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Προβλημα με MySQL Query

Δημοσίευση από Apostolis_38 » 16 Απρ 2009 13:13

H λογική είναι να προσθέσεις κι άλλα πεδία όπου:

πίνακας users:
πεδίο

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

user = 1
user = 2
user = 3
πίνακας friends:
πεδίο

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

user_friend = 1
user_friend = 1
user_friend = 1
ή

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

user_friend = 2
user_friend = 2
user_friend = 2
και το query:

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

select ...... from users,friends where user=user_friend
ή user!=user_friend
κ.λ.π. κ.λ.π. για να μπορεί να γίνει η σύνδεση.
Τα ονόματα των πεδίων στα έδωσα για παράδειγμα, δεν είναι ανάγκη να είναι αυτά ακριβώς.


Υ.Γ. μπορείς να το κάνεις και με το userid του πίνακα users αλλά φοβάμαι μην σε μπερδέψω.

Argirids
Δημοσιεύσεις: 41
Εγγραφή: 17 Ιαν 2009 17:32

Προβλημα με MySQL Query

Δημοσίευση από Argirids » 16 Απρ 2009 13:39

Apostolis_38 επειδη μπερδευτικα αυτο που μου λες δεν ειναι σαν αυτο που εχω εγω απο λεω:

users.email = friends.user1 απλα εγω κανω ελεγχω τα emails και οχι μια extra μεταβλητη.

Αυτο που μου λες στο τελος ( στο P.S) ειναι να φτιαχω μια μεταβλητη στον πινακα friends και να λεω οτι η μεταβλητη (π.χ user_friends) :

SELECT users.email, users.fisrt_name, users.last_name
FROM users
WHERE users.userID!=friends.user_friends......

ομως πρεπει να κραταω και την μεταβλητη session που ειναι αυτη ποθ κρατα το email του χρηστη που εχει κανει login. Γιαυτο το εκανα με αυτο το τροπο.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6237
Εγγραφή: 30 Νοέμ 2004 03:09

Προβλημα με MySQL Query

Δημοσίευση από fafos » 16 Απρ 2009 13:39

To lathos sou einai oti exeis to email san monadiko field anagnorishs tou xrhsth... kanonika kathe xrhsths prepei na exei ena monadiko username gia na anagnorizetai kai auto to username vazeis mesa sta pedia ton friends... me auton ton tropo den xreiazetai na kaneis join 2 pinakes gia na pareis ta stoixeia tou kathe xrhsth pou den einai filos h to antitheto..

se mia anazhthsh den xreiazetai na mou parousiazeis ola ta stoixeia tou xrhsth (onoma, epitheto, politika pisteuo klp).. se ena social ta panta prepei na sthrizontai gyro apo ena monadiko stoixeio gia ton kathe xrhsth.. sthn prokeimenh periptosh prepei na einai ena username (p.x. fafos h Argirids)..

To provlhma pou sou parousiazetai tora einai poly aplo mprosta se auta pou tha sou vgoun meta...
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Argirids
Δημοσιεύσεις: 41
Εγγραφή: 17 Ιαν 2009 17:32

Προβλημα με MySQL Query

Δημοσίευση από Argirids » 16 Απρ 2009 14:08

fafos έγραψε:To lathos sou einai oti exeis to email san monadiko field anagnorishs tou xrhsth... kanonika kathe xrhsths prepei na exei ena monadiko username gia na anagnorizetai kai auto to username vazeis mesa sta pedia ton friends... me auton ton tropo den xreiazetai na kaneis join 2 pinakes gia na pareis ta stoixeia tou kathe xrhsth pou den einai filos h to antitheto..
Ναι μα το email ειναι μοναδικο αυτο χρησιμοποιω και οταν κανει Register και για username οταν κανει login.
fafos έγραψε: se mia anazhthsh den xreiazetai na mou parousiazeis ola ta stoixeia tou xrhsth (onoma, epitheto, politika pisteuo klp).. se ena social ta panta prepei na sthrizontai gyro apo ena monadiko stoixeio gia ton kathe xrhsth.. sthn prokeimenh periptosh prepei na einai ena username (p.x. fafos h Argirids)..
Εχεις δικαιο αλλα αυτο ειναι ο τελευταιο πραγμα που με απασχολει. :D
Mακαρι να δουλεψει σωστα το query και αυτο ειναι λεπτομερια.

fafos έγραψε: To provlhma pou sou parousiazetai tora einai poly aplo mprosta se auta pou tha sou vgoun meta...


Fafos μηπως ξερεις των τροπο γιατι δεν μπορω να την βρω και με εχει ειδη καθυστερησει αρκετα....
Ευχαριστω!

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

Προβλημα με MySQL Query

Δημοσίευση από dva_dev » 16 Απρ 2009 16:42

Για δοκίμασε αυτά:
α)

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

select * from users
where email <> session
and email not in &#40;select friends.user2 from friends where friends.user1 = session&#41;
ή β)

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

select users.* from users
left join &#40;select friends.user2 from friends where friends.user1=session&#41; f
on users.email = f.user2
where f.user2 is null and users.email<>session
Τώρα στην πράξη, ρίξε data στους πίνακες και θα δείξει τι είναι προτιμότερο. Αλλά καλύτερα να αποφύγεις να κάνεις joins με κείμενα.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6237
Εγγραφή: 30 Νοέμ 2004 03:09

Προβλημα με MySQL Query

Δημοσίευση από fafos » 16 Απρ 2009 16:59

To a) tou dva_dev einai sosto alla dinei kai ton proto filo opote prepei na prosthesoume allo ena not in:

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

select * from users
where email <> session
and email not in &#40;select friends.user2 from friends where friends.user1 = session&#41;
and email not in &#40;select friends.user1 from friends where friends.user2 = session&#41;

kati tetoia kai alla polla tha zhtas se kathe ti pou tha afora tous users eno an eixes username ta queries tha htan poly poio apla..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Argirids
Δημοσιεύσεις: 41
Εγγραφή: 17 Ιαν 2009 17:32

Προβλημα με MySQL Query

Δημοσίευση από Argirids » 16 Απρ 2009 17:25

Ενταξει παιδια τι να πω! Ευχαριστω παρα πολυ δουλεψε μια χαρα τo a) tou dva_dev με την τροποποιηση που ειπε ο fafos.

Ευχαριστω και παλι! :P :P :P :P :P
Τα υπολοιπα που βγαινουν ΟΚ μεχρι τωρα!

Απάντηση

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

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

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