SELECT si COUNT in doua tabele MySQL

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
trif
Mesaje:500

SELECT si COUNT in doua tabele MySQL

salut,
am 2 tabele:
tab 1

Cod: Selectaţi tot

capul de tabel ---> id ---- denumire_poezie ----- cheie 
 inregistrare -------> 1 ---- poezie1 ---------------- a1 
 inregistrare -------> 2 ---- poezie2 ---------------- a2 
 inregistrare -------> 3 ---- poezie3 ---------------- a2 
 inregistrare -------> 4 ---- poezie4 ---------------- a1 
 inregistrare -------> 5 ---- poezie5 ---------------- a1 
 inregistrare -------> 6 ---- poezie6 ---------------- a1 
 inregistrare -------> 7 ---- poezie7 ---------------- a2 
 . 
 . 
 . 
 inregistrare -------> n ---- poezie_n ---------------- an 
tab 2

Cod: Selectaţi tot

capul de tabel ---> id ---- denumire_autor----- cheie 
 inregistrare -------> 1 ---- autor1 ---------------- a1 
 inregistrare -------> 2 ---- autor2 ---------------- a2 
 . 
 . 
 . 
 inregistrare -------> n ---- autor_n ---------------- an 
ceea ce imi trebuie mie este urmatorul rezultat:

Cod: Selectaţi tot

autor1 ----- 4 poezi 
 autor2 ----- 3 poezi 
in functie de cheie imi afiseaza autorul si adunarea randurilor care se face cu COUNT se face doar din tab1. DIN TAB2 SE PREIA DOAR AUTORUL CA SA NU SE PUNA ACEA CHEIE DIN TAB1. cred ca se intelege de data acesta ceea ce doresc si daca stiti va rog sa ma ajutati. astept raspuns. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Salut
Incearca unul din aceste trei Select-uri:

Cod: Selectaţi tot

select tab2.denumire_autor, count(tab1.cheie) as nrp
from tab2
   left join tab1 on tab2.cheie = tab1.cheie
group by tab1.cheie
Sau:

Cod: Selectaţi tot

SELECT tab2.denumire_autor, (SELECT COUNT(tab1.cheie) AS nrp FROM tab1 WHERE tab1.cheie=tab2.cheie) FROM tab2
Sau:

Cod: Selectaţi tot

SELECT tab2.denumire_autor, FROM tab2 LEFT JOIN (SELECT COUNT(tab1.cheie) FROM tab1 GROUP BY cheie) AS nrp on tab2.cheie = tab1.cheie

trif Mesaje:500
salut, gata am reusit. am combinat cele doua coduri si merge super bine. aici este codul:

Cod: Selectaţi tot

<?php
$sql="SELECT * FROM categorie ORDER BY denumire_categorie ASC"; 
$res=mysql_query($sql);
  $clsnr = 0;      // variabila cu numar ce va fi folosit la alternare /modificare nume clasa css
$tabel = '<table border="0" width="550" cellspacing="0" cellpadding="0"><tr><td>Denumire cantare</td></tr>';
$i=0;
while($rand=mysql_fetch_array($res)) {
  $categorie=''.$rand['denumire_categorie'].'';
$cheie = mysql_fetch_row(mysql_query("SELECT cheie FROM categorie WHERE denumire_categorie = '$categorie'")); 
 /*am scos cheia,pe baza acesteia adunam toate rezultatele din tabelul_1*/ 
 $rezultate_tabel_1 = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM cantari_ppt WHERE categoria='$cheie[0]'")); 
 /*am scos si rezultatele,acum le 'imbinam' */ 
  $clasa = 'cls'.$clsnr; 
   //echo "$categorie   - $rezultate_tabel_1[0] poezii <br/>";
	$tabel .= '<tr class="'. $clasa. '"/> <td>'.$rand['denumire_categorie'].' ------ '.$rezultate_tabel_1[0].' poezii<br> </td></tr>';
	  $i++;
  $clsnr = $i%2;
}
$tabel .= '</table>';  
echo $tabel;
?>
multumesc mult pentru ajutor. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

trif Mesaje:500
o alta varianta care da acelasi rezultat:

Cod: Selectaţi tot

$sql = "select categorie.denumire_categorie as denumire_categorie, 
           count(cantari_ppt.categoria) as categoria 
  from categorie categorie 
           left join cantari_ppt cantari_ppt on categorie.cheie = cantari_ppt.categoria 
  group by categorie.denumire_categorie ";
 //aici iei randurile: 
 $result = mysql_query($sql);
  $clsnr = 0;      // variabila cu numar ce va fi folosit la alternare /modificare nume clasa css
$tabel = '<table border="0" width="550" cellspacing="0" cellpadding="0"><tr><td>Denumire categorie</td> <td>Total</td></tr>';
$i=0;
 $rand; 
  while($rand = mysql_fetch_array( $result )) { 
    $clasa = 'cls'.$clsnr; 
   //echo "$categorie   - $rezultate_tabel_1[0] poezii <br/>";
	$tabel .= '<tr class="'. $clasa. '"/> <td>' .$rand['denumire_categorie'].'</td> <td> '.$rand['categoria'].' cantari<br/></td></tr>';
	  $i++;
  $clsnr = $i%2;
}
$tabel .= '</table>';  
echo $tabel;
dar ca sa fie raspuns complet si sa se stie de ce mai sunt niste coduri in plus, zic ca sunt coduri care formeaza tabel tip "zebra". cu codul de sus iti da tabelul dar nu si ti le face fara "stil" care are urmatorul cod

Cod: Selectaţi tot

<style type="text/css"><!--
.cls0 {background:#EEE;}
.cls1 {background:#FFF;}
--></style>
acest cod se pune in <head> cod "style" (cel de mai sus) </head>.
sper sa va fie de ajutor, pentru mine a fost de mare ajutor de aceea doresc sa il aveti si voi ca sa va folositi de el. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

Subiecte similare