Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Nie działający LEFT JOIN
Balon
post 15.10.2006, 11:38:12
Post #1





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

Ostrzeżenie: (0%)
-----


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


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
nospor
post 15.10.2006, 11:46:46
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Balon
post 15.10.2006, 12:06:46
Post #3





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

Ostrzeżenie: (0%)
-----


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...

Ten post edytował Balon 15.10.2006, 12:10:25


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
dr_bonzo
post 15.10.2006, 12:15:23
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Powinienes laczyc komentarze z userami:
ON komentarz.user_id = user.id
i w WHERE wylaczyc userow z id = 0


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
nospor
post 15.10.2006, 12:24:27
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.06.2025 - 17:55