SELECT si COUNT in doua tabele MySQL
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
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:
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
- Setare valori din array in select tag
JavaScript - jQuery - Ajax
Primul mesaj
Salut am un array cu orele de functionare
$data = array (
'0400' => '04:00 AM',
'0430' => '04:30 AM',
'0500' => '05:00 AM',
'0530'...
Ultimul mesaj
Testeaza urmatorul cod.
Daca ceva mai trebuie schimbat, incearca si tu sa modifici dupa cum stii, in functie de ce vrei sa obtii.
Open:...