Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/03/2011, 11h01   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 49
Points : 13
Points : 13
Par défaut Compter les enrs d'une 2ème tables avec un ID

Bonjour à tous,

Je voudrais compter les lignes d'une 2ème tables reliée à la premiere par un identifiant et afficher l'identifiant de la table 1 et le total de la table 2.

Cette requête ne fonctionne pas bien puisqu'elle me renvoie la valeur 1 si je n'ai pas de lignes dans la 2ème table

Code :
1
2
3
4
 
SELECT t1.idcategorie, count(*) FROM t_categories t1
LEFT OUTER JOIN t_titres t2 ON t2.idcategorie = t1.idcategorie 
GROUP BY t1.idcategorie
Comment réécrite cette requête. Je pensais au sous-requête, mais je ne sais pas comment l'écrire ?

Merci de votre aide
helios399 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 11h06   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Bonjour,

que donne ceci ?

Code sql :
1
2
3
4
5
6
7
 
SELECT t1.idcategorie, derivee.total FROM t_categories t1
LEFT OUTER JOIN (
    SELECT COUNT(*) AS total FROM  t_titres AS t2
    WHERE t2.idcategorie = t1.idcategorie
) AS derivee
GROUP BY t1.idcategorie
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 11h19   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 49
Points : 13
Points : 13
Par défaut ERROR

Merci de ta proposition

Voici l'erreur MySQL que j'obtiens

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY t1.idcategorie LIMIT 0, 30' at line 6
helios399 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 11h32   #4
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Code sql :
1
2
3
4
5
6
7
8
 
SELECT t1.idcategorie, derivee.total FROM t_categories t1
LEFT OUTER JOIN (
    SELECT t2idcategorie, COUNT(*) AS total FROM  t_titres AS t2
    WHERE t2.idcategorie = t1.idcategorie
) AS derivee
ON t1.idcategorie = derivee.idcategorie
GROUP BY t1.idcategorie
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 12h03   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 49
Points : 13
Points : 13
Par défaut SUPER !

J'avais une erreur
#1054 - Unknown column 't1.idcategorie' in 'where clause'
Intuitivement j'ai changé la clause WHERE par le GROUP BY puisque tu voulais faire le total dans la sous requête.

Un grand merci à toi, et bonne journée
Voici le code qui fonctionne, retourne bien le nb de lignes de la 2ème table et NULL si aucune ligne trouvée.

Code :
1
2
3
4
5
6
7
 
SELECT t1.idcategorie, derivee.total FROM t_categories AS t1
LEFT OUTER JOIN (
    SELECT t2.idcategorie, COUNT(*) AS total FROM t_titres AS t2
    GROUP BY t1.idcategorie 
) AS derivee
ON t1.idcategorie = derivee.idcategorie
helios399 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h37.


 
 
 
 
Partenaires

Hébergement Web