Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Selectare din 2 tabele
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Subiectul anterior :: Subiectul următor  
Autor Mesaj
rev909



Data înscrierii: 26/Mai/2002
Mesaje: 3

Trimis: Joi Oct 21, 2004 9:25 am    Titlul subiectului: Selectare din 2 tabele  

Am 2 tabele. Una contine informatiile despre niste poze. Sa zicem ca are urmatoarea forma:

id - nume_poza - url_poza

Cealalta tabela este tabela cu comentariile pentru poze. Forma:

id - id_poza - comentariu

Cand afisez poza e simplu, dau un "SELECT comentariu WHERE id_poza = $id" (unde $id este id-ul pozei tocmai afisate) si afisez comentariile asociate cu acea poza.

Intrebarea mea este daca se poate ca printr-un singur SELECT sa iau lista numelor pozelor si numarul de comentarii pentru fiecare? Adica vreau sa am lista pozelor in forma urmatoare:

Camping la munte - 3 comentarii
Pescuit in lac - 0 comentarii
Urcam la deal - 4 comentaii
samd

Ma ajuta cineva?
Sus  
PCPbSlack



Data înscrierii: 23/Noi/2003
Mesaje: 143
Locație: Ploiesti

Trimis: Joi Oct 21, 2004 11:22 am    Titlul subiectului:  

select *,count(*) as nr_comentarii from poze,comentarii where poze.id=comentarii.id_poza group by comentarii.id_poza

selectul de mai sus ar trebui sa rezolve problema ta. ca un mic exemplu

<?php $query = "select *,count(*) as nr_comentarii from poze,comentarii where poze.id=comentarii.id_poza group by comentarii.id_poza"; $result = mysql_query($query) or die(); while($r = mysql_fetch_assoc($result)) {     print $r['nume_poza'].' - '.$r['nr_comentarii'].' comentarii'; } ?>

sper sa mearga :)
Sus  
rev909



Data înscrierii: 26/Mai/2002
Mesaje: 3

Trimis: Joi Oct 21, 2004 12:25 pm    Titlul subiectului:  

Merge dar problema e ca nu afiseaza pozele cu 0 comentarii.
Sus  
arond



Data înscrierii: 11/Mar/2004
Mesaje: 580
Locație: 127.0.0.1

Trimis: Joi Oct 21, 2004 12:34 pm    Titlul subiectului:  

Cod: SELECT poze.nume_poza,poze.url_poza,COUNT(comentarii.id) AS count FROM poze LEFT JOIN comentarii ON comentarii.id_poza=poze.id GROUP BY poze.id

De multe ori e mai clar sa folosesti JOIN-uri explicite in locul celor implicite (ca cel folosit de psoftinc in postul anterior).

Aici smecheria este LEFT JOIN (include toate inregistrarile din primul tabel si numai cele din al doilea tabel care se potrivesc conditiei din clauza ON). Cu alte cuvinte, iti va include si pozele care nu au nici un comentariu.

In cazul query-ului propus de posftinc, JOIN-ul implicit e echivalent cu INNER JOIN (selecteaza numai inregistrarile din primul si al doilea tabel care se conformeaza conditiei din clauza WHERE).

Numa' bune.
Sus  
PCPbSlack



Data înscrierii: 23/Noi/2003
Mesaje: 143
Locație: Ploiesti

Trimis: Joi Oct 21, 2004 12:40 pm    Titlul subiectului:  

sunt nevoit sa predau stafeta lui arond, pentru ca are dreptare. eu nu am luat in calcul si pozele fara comentarii :)
Sus  
rev909



Data înscrierii: 26/Mai/2002
Mesaje: 3

Trimis: Vin Apr 08, 2005 5:55 pm    Titlul subiectului:  

Revin si eu dupa o jumat' de an cu o continuarea intrebarii... :)

Ce se intampla daca am in plus si categorii de poze?

Categoriile sunt intr-o tabela categorii in urmatorul format:

id - nume

Iar in poze am campul id_categorie care imi arata din care categorie face parte poza respectiva.

Vreau sa afisez asa:

Nume poza - Nume categorie poza - Numar comentarii

Evident si pozele cu 0 comentarii. Am tot incercat dar nu am reusit sa dibuiesc cum se face LEFT JOIN-ul in cazul cand am mai mult de 2 tabele.

Mersi de ajutor.
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community