Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Nie działający LEFT JOIN
Forum PHP.pl > Forum > Bazy danych > MySQL
Balon
mam takie zapytanie

  1. SELECT DISTINCT c.*
  2. FROM comments c
  3. LEFT JOIN users u ON c.userid <> 0
  4. WHERE c.file_id = 902
  5. ORDER BY c.id ASC


zwraca ono takie cos



jak widzicie przy rekordach gdzie userid komentarza jest rozne od zera powinno dolaczac tabele users, nie robi tego jak widac na screenie.

dodatkowo mam pytanie, jak przerobic to zapytanie zeby zamiast dolaczania calej tabeli users dolaczylo mi np tylko tabele nick, avatar ?

pozdrawiam
nospor
Ja zadam pytanie: co ty chciales osiągnąc? Bo juz dawno tak zamotanego zapytania nie widzialem smile.gif

Pozatym nie wyswietla ci userow, bo nie dales ich w select. w select dalej tylko c.* a o userach zapomniales. no i zlączenia robi sie na zupelnie innych warunkach niz u ciebie

edit:
bo u ciebie komenty moą byc pisane przez gosci? Tak wnioskuje z zapytania. A ty chcesz wyciagnac komenty pisane przez userow? Jesli tak, to w sumie byles blisko, ale jeszcze troche brakuje winksmiley.jpg
Balon
nie, sytuacje mam taka

pobieram wszystkie komentarze do danego filmu - lacze dwie tabele: komentarzy i userow w celu pobraniado komentarza nazwy uzytkownika.
ale w komentarzach id anonimowych uzytkownikow zapisywane jest jako 0 czyli nie pobierze prawidlowo nazwy uzytkownika o id = 0. dlatego musze pobierac nazwe tylko wtedy kiedy id usera przy komentarzu nie jest rowne 0

czy zle robie ? smile.gif

ok poprawilem tak jak mowiles ale teraz dziwny efekt jest....

w rzeczywistosci przy tym filmie sa dwa komentarze - jeden anonimowy, drugi zarejestrowanego usera o name Krzysztof...

kompletnie sie pogubilem juz

przerobilem teraz troche to

  1. SELECT DISTINCT c. * , u.id, u.name, u.avatar
  2. FROM comments c
  3. LEFT JOIN users u ON c.userid <>0
  4. WHERE c.file_id =902 AND c.userid = u.id
  5. ORDER BY c.id ASC


wywala mi teraz komentarze zarejestrowanych uzytkownikow.... a anonimowych nie...
dr_bonzo
Powinienes laczyc komentarze z userami:
ON komentarz.user_id = user.id
i w WHERE wylaczyc userow z id = 0
nospor
wystarczy w zlaczeniue dac odpowiedni wrunek:
  1. ...ON (c.userid <> 0 AND c.userid = u.id)....

i to wszystko. w where tylko dac warunki na film i juz userami se glowy nie zaprzatac
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.