Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SELECT i WHERE, który ma nie wyświetlić tego co w nawiasie
Forum PHP.pl > Forum > Bazy danych > MySQL
tish83
Witam, wiem że nie zbyt trafnie sformułowałam temat, ale zabrakło pomysłów.
Problem dotyczy kontaktów
tabela dziennik
id | rok_u | profilid | klasaid | nazwisko | imie |userid
1 1 1 1 x x 8
2 2 2 2 x x 9
3 3 3 3 x x 4

tabela friends
id | userid | friendid | status | data
1 8 9 0 0
2 4 8 0 0

Zapytanie ma wyświetlać kontakty, których jeszcze nie zaproszono do grona znajomych

SELECT
d.userid AS d_userid,
f.userid AS f_userid,
f.friendid AS f_friendid,
f2.userid AS f2_userid,
f2.friendid AS f2_friendid
FROM `dziennik` d
LEFT JOIN friends f ON d.userid=f.userid
LEFT JOIN friends f2 ON d.userid=f2.friendid
WHERE d.userid!=0 && d.userid!='8' && !(d.rok_u='2012' && d.profilid='9' && d.klasaid='1')
&&
!((d.userid=f.userid || d.userid=f.friendid) || (d.userid=f2.userid || d.userid=f2.friendid)) ////////-----------no i toto jak jest bez ! to wyświetla mi tylko te kontakty które się już zaprosiły, więc dodanie ! powinno wyświetlać wszystko oprócz tych, a zwraca 0 wyników-------------///////
ORDER BY d.userid DESC
sazian
po pierwsze to sql a nie php więc
nie && tylko AND
nie || tylko OR
nie ! tylko NOT

po drugie to chyba powinno być tak
  1. ((d.userid=f.userid AND f.friendid IS NULL) OR (d.userid=f2.userid AND f2.friendid IS NULL))
tish83
dziękuję za zwrócenie uwagi na stosowane operatory, ale pomimo wszystko nic nie zwraca
sazian
dobra to zrób najprostszą metodą
wywal wszytko z WHERE
i wyświetl te kolumny które były w WHERE


zobacz jakie wartości przyjmują dla wierszy które cię interesują i "skleć" dla nich odpowiedni warunek
mmmmmmm
  1. SELECT
  2. d.userid AS d_userid,
  3. f.userid AS f_userid,
  4. f.friendid AS f_friendid,
  5. f2.userid AS f2_userid,
  6. f2.friendid AS f2_friendid
  7. FROM `dziennik` d
  8. LEFT JOIN friends f ON d.userid=f.userid
  9. LEFT JOIN friends f2 ON d.userid=f2.friendid
  10. WHERE d.userid<>0 AND d.userid<>'8' AND NOT (d.rok_u='2012' AND d.profilid='9' AND d.klasaid='1')
  11. AND f.id IS NULL AND f2.id IS NULL
tish83
mmmmmmm dziękuję smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.