Affichage d'un total avec deux tables

Eléphant du PHP | 297 Messages

17 oct. 2009, 17:56

Bonjour,
Je bloque sur cette situation.
J'ai deux tables dans ma bases
table 1
id
ref
...

Table 2
id
nom
nbr
...

la table 2 (est vide au depart et se remplie avec le temps), a de commun que ref de table 1 et nom de table 2. Je souhaite faire un listing des 'ref' de la table 1, en affichant le nombre de fois que l'on trouve 'nom' dans la table 2

Je suis arrivé jusqu'a ce code...qui ne m'affiche qu'un nom, et le total de toute une des 2 tables semble t il

Code : Tout sélectionner

"SELECT ref, COUNT(nbr) AS nb FROM table1 LEFT JOIN table2 ON table1.ref = table2.nom ORDER BY `ref` ASC"
merci si qlq peut m'aider

ViPHP
ViPHP | 2291 Messages

17 oct. 2009, 21:28

Ceci ne fonctionne pas :?:
SELECT t1.ref, COUNT(t2.nbr), t2.nom FROM table1 t1, table2 t2 WHERE  t1.ref = t2.nom ORDER BY t1.ref ASC
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphant du PHP | 297 Messages

18 oct. 2009, 15:12

salut dunbar,
merci pour ta réponse.
J'ai mis en place ta solution, mais il ne m'affiche que la première ligne duu la table 2.
J'ai donc essayé par elimination en utilsant ce code,et en enlevant une partie,

Code : Tout sélectionner

SELECT * FROM table1 t1, table2 t2 WHERE t1.ref = t2.nom ORDER BY t1.ref ASC
cela m'affiche
id1 ref1 ...
id1 ref1 ...
id2 ref2 ...
id3 ref3 ...
id3 ref3 ...
id3 ref3 ...
id4 ref4 ...

C'est presque ca, sauf que je souhaiterai afficher ceci
id1 ref1 2
id2 ref2 1
id3 ref3 3
id4 ref4 1

surement donc avec la fonction COUNT ou SUM sur la colonne nbr de la table 2, mais comment l'ecrire ??

ViPHP
ViPHP | 2291 Messages

19 oct. 2009, 08:29

Un COUNT(*) ne fonctionne pas :?:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphant du PHP | 297 Messages

19 oct. 2009, 11:49

merci, ca m'avance :)

Eléphant du PHP | 297 Messages

02 nov. 2009, 15:04

Si qlq peut m'aider please !?

Voici mes tables :
table 1
id
ref
...

Table 2
id
nom
nbr
...

et je souhaiterai ce resultat :
id nom somme
1 Paul 7
2 Marie 5
3 Jean 3
4 Pierre 1

J'ai écris cette ligne:
"SELECT SUM(t2.nbr) AS somme FROM  table2 t2 , table1 t1 WHERE  t1.ref = t2.nom"
mais ca m'affiche le total en colonne somme,c a dire 16... :?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

02 nov. 2009, 19:18

Oui, SUM cumule les valeurs, pour compter les lignes c'est bien COUNT

Code : Tout sélectionner

SELECT t1.ref, COUNT(t2.nom) AS nb FROM table1 t1 INNER JOIN table2 t2 ON t1.ref = t2.nom GROUP BY t1.ref

Eléphant du PHP | 297 Messages

06 nov. 2009, 02:52

et bien merci beaucoup, ça fonctionne !