stal-sw
21.07.2005, 18:19:29
Witam.
Mam 3 tabele w baize dnaych.
I tak:
----newsy - id,tytul, tresc, autor
----admini - id, login
----komentarze - id, dzial, rekord_komentowany, tresc
I teraz chce wysietlic wszytkie newsy i chce wykorzystac jedno zpaytanie aby pobrac:
wszytko z tabeli newsy, login autora newsa(admina), oraz liczbe komentarzy danego newsa. Pole dzial w zpaytaniu ma miec wartosc 1 (a to daltego ze tabela z komentarzami jest sotwrzona nie tylko do komentowania newso ale i innej zawartosci sotrny - i do rozrozniania sluzy pole DZIAL.
Bardzo prosze o pomoc - wiem ze zapewne trzba uzyc LEFT JOINOW ale z nimi jeszcze mam problemy.
FiDO
21.07.2005, 20:52:18
SELECT n.*, a.login autor, COUNT(*) komentarzy
FROM newsy n
INNER JOIN admini a ON (n.autor = a.id)
LEFT JOIN komentarze k ON (n.id = k.rekord_komentowany AND k.dzial = 1)
GROUP BY n.id
stal-sw
22.07.2005, 09:06:01
Witam.
Prawie dziala.
Ogolnei jest taki problem ze jak dla danego newsa nei ma wogole komentarzy to i tak wysietla mi zawsze liczbe komentarzy 1, zamiast 0.
Proboje to jakos zmienic ale dalej nie che wysitelic libczy 0 jesli nie ma zadnego komentarza.
FiDO
22.07.2005, 19:25:48
Moj blad.. zmien na COUNT(k.id)
stal-sw
23.07.2005, 09:15:34
Witam.
Wielkie dzieki FIDO teraz juz ladnie dziala.
Mam jeszcze jedno pytanko w tym temacie:
jak zastosowac d tego zapytania SUBSTRING aby pobieral tylko 250 znakow z pola TRESC

FiDO
23.07.2005, 10:05:43
uzyc funkcji LEFT(n.tresc, 250)