MySQL problem... Dve tabele, hoću da dobijem count sa WHERE u while loop

1

MySQL problem... Dve tabele, hoću da dobijem count sa WHERE u while loop

offline
  • Milan Kragujević
  • tzv. Junior PHP Programer
  • Pridružio: 20 Avg 2011
  • Poruke: 76
  • Gde živiš: Klenovnik, Srbija

Ovako.
Naslov je nerazvumljiv, al šta da radim Confused
Ovako:
Imam tabelu:
ID | IME | OPIS | KOMENTARID
1 | Ime1 | AAAA | 1
2 | Ime2 | TPRS | 1
3 | Ime3 | ADSD | 1
4 | Ime4 | FRRR | 0

Ako je komentarid = 0, ne prikazuju se komentari.
Ako je 1, prikazuju se.
Imam i drugu tabelu:
ID | POSTID | KOMENT
1 | 1 | KOMENTARRRRRSĆF DSFHDJHAS

I imam while loop.
Hoću da dobijem ovo:
Ime: (ime-iz-baze)
Opis: (opis-iz-baze)
Broj komentara (count(id) ali iz druge tabele.)
Znači da u while loop-u može da prikaže broj komentara svakog članka.
Hvala unaped!



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3747
  • Gde živiš: 127.0.0.1

SELECT t1.ime, t1.opis, count(*) as broj FROM tabela1 t1 LEFT JOIN tabela2 t2 ON t1.komentar_id = t2.id GROUP BY t1.komentar_id

Inace, dovoljna ti je i jedna tabela za ovako nesto.



offline
  • Milan Kragujević
  • tzv. Junior PHP Programer
  • Pridružio: 20 Avg 2011
  • Poruke: 76
  • Gde živiš: Klenovnik, Srbija

Napisano: 27 Avg 2011 23:03

znam da je dovoljna, ali neču da bude previše komplikovano, kako bi neko to mogao da oržava

Dopuna: 28 Avg 2011 0:21

U međuvremenu sam promenio strukturu i sada se javlja problem - KAKO?
Nova struktura je:

clanci:

komentari:


Znači ima dve tabele.
Hoću da clanci povuče iz komentari ukupan broj komentara, koji imaju post_id koji je jednak trenutnom id-u članak.
Sve se ovo dešava kroz while loop.
Probao sam ovako, ali neće
SELECT komentari.ime, komentari.id, komentari.email, komentari.komentar, komentari.datum, komentari.post_id, komentari.vreme, komentari.objavljeno, clanci.id, clanci.ime, clanci.sadrzaj, clanci.dan, clanci.mesec, clanci.godina, clanci.objavljeno, clanci.komentarid, clanci.slika, clanci.kategorija, clanci.slajder, clanci.autor, count(komentari.id) as broj FROM clanci c1, komentari k1 LEFT JOIN clanci c2 ON k1.post_id = c1.id

offline
  • Pridružio: 16 Jan 2010
  • Poruke: 241
  • Gde živiš: Zemun

Prvo sto treba da proveris da li upit lepo radi, tako sto zveknes ceo upit u bazu i vidis sta ce ti vratiti, moze da se desi da sintaksa nije dobra i ne radi. Evo ti primer kao funkcionise Left Join:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

Gledajuci tvoj upit, ja bih izbacio "clanci c1" i to napisao posle LEFT JOIN, jer tu upisujes drugu tabelu i kasnije upisujes njihovu vezu.

offline
  • Milan Kragujević
  • tzv. Junior PHP Programer
  • Pridružio: 20 Avg 2011
  • Poruke: 76
  • Gde živiš: Klenovnik, Srbija

Napisano: 28 Avg 2011 15:43

Hvala, spasio si me!!!

Dopuna: 28 Avg 2011 19:57

Opet ne radi...
Ne mogu da nateram upit da radi sa LIMIT 2,10 (ili bilokojibroj, 10)...
Lepo radi bez deljanja na stranice, ali sa deljenjem ne radi..

offline
  • Pridružio: 16 Jan 2010
  • Poruke: 241
  • Gde živiš: Zemun

Postavi ceo upit da vidimo.

offline
  • Milan Kragujević
  • tzv. Junior PHP Programer
  • Pridružio: 20 Avg 2011
  • Poruke: 76
  • Gde živiš: Klenovnik, Srbija

SELECT clanci.*, komentari.*, count(komentari.id) as brojac, kategorije.*
FROM clanci WHERE clanci.objavljeno = '1' AND komentari.objavljeno = '1'
LEFT JOIN komentari
ON clanci.id = komentari.post_id
LEFT JOIN kategorije ON clanci.kategorija = kategorije.id GROUP BY clanci.id LIMIT $start, $limit

$limit je 9 , a $start zavisi od strane na kojoj se nalazi korisnik, a može da bude 9,18,27,36,45,54,63,72,81,90,99,118 [...]

offline
  • Pridružio: 16 Jan 2010
  • Poruke: 241
  • Gde živiš: Zemun

A da li si siguran da dobijaš vrednosti u varijablama $start i $limit? Upit bez LIMIT-a radi dobro?

offline
  • Milan Kragujević
  • tzv. Junior PHP Programer
  • Pridružio: 20 Avg 2011
  • Poruke: 76
  • Gde živiš: Klenovnik, Srbija

Siguran sam da dobijan vrednosti jer sam echovao sql upit.
Neće da radi ni bez LIMIT

offline
  • Pridružio: 16 Jan 2010
  • Poruke: 241
  • Gde živiš: Zemun

Mislim da ovo ne mozes:
SELECT clanci.*, komentari.*, count(komentari.id) as brojac, kategorije.*
moras da navedes sve kolone koje ti trebaju. Kada ehujes taj upit, kopiraj ga i ubaci ga u phpmyadmin u SQL tab i pokreni ga. Vidi sta ces dobiti, mislim da ti ovo gore sto sam naveo pravi problem, a to ces videti ako izbaci neku gresku, a mislim da ce u ovom slucaju biti sintaksna greska.

Ko je trenutno na forumu
 

Ukupno su 1111 korisnika na forumu :: 39 registrovanih, 6 sakrivenih i 1066 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., babaroga, bojank, bojcistv, cavatina, cer, Denaya, draggan, flash12, ginjica, havoc995, kairos, Karla, krkalon, Kubovac, ladro, MB120mm, mercedesamg, Mercury, Mi lao shu, milenko crazy north, Milos ZA, Mixelotti, nemkea71, nikoladim, Panter, rovac, royst33, ruger357, Sale.S, savaskytec, Sirius, Snorks, Trpe Grozni, Vlada78, zdrebac, zillbg, zziko, šumar bk2