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: 3714
  • 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 945 korisnika na forumu :: 74 registrovanih, 9 sakrivenih i 862 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: 357magnum, A.R.Chafee.Jr., Apok, bagor10, Bobrock1, braca57, Bubili, chichabg, Cigi, Cobi026, dejanbenkovic, Denaya, Despot1, Dorcolac, draggan, dukajov, Ehinacea, flash12, geo.dule, goran.vvv, GORDI, goxin, Griffon vulture, havoc995, hawkeye, ikan, Istman, ivan1973, izi, Joja, Koridor, Krusarac, kunktator, kuntalo, Lazarus, Lieutenant, loon123, maiden6657, menges, Mercury, Milan A. Nikolic, mile23, Miskohd, mnn2, moldway, Motocar, nenaddz, nizam, nuke92, Pakito93, Panter, pein, Pomorac1, Rakenica, raykan, rkekoke, RobinHood12, rodoljub, Sale.S, Shufle, sickmouse, Srle993, stagezin, tmanda323, Toni, trajkoni018, upitnik, uruk, VJ, VladaNS1978, vladas87, zastavnik, zexoni, zillbg