[Résolu] PB requete SQL 3 tables + 2 count
6 messages
• Page 1 sur 1
- rhesus_plw
- Nouveau WRInaute

- Messages: 3
- Inscription: 25 Jan 2010
[Résolu] PB requete SQL 3 tables + 2 count
Bonjour Tout le monde.
Je n'arrive pas à construire une requête sql qui interroge plusieurs tables et qui fait 2 counts.
JE vous explique le contexte, j'ai une table qui contient des nom de logiciels, une autre table avec des utilisateurs et une autre table avec des images.
Je veux afficher la liste des logiciels mais avec le nombre de personne qui utilise chaque logiciel et le nombre d'image qui ont été faite avec chaque logiciel.
Exemple : photoshop -> 10 utilisateur et 53 images.
J'arrive bien à faire une requête pour savoir combien j'ai d'utilisateur par logiciel :
SELECT l.*, count(c.id_client) as nb_clients FROM logiciels as l, competences as c WHERE l.id_logiciel=c.id_logiciel GROUP BY l.id_logiciel ORDER BY nb_clients DESC
J'arrive bien a faire une requette pour savoir combien d'images ont été faite avec chaque logiciel :
SELECT l.*, count(tl.id_travail) as nb_travaux FROM logiciels as l, travaux_to_logiciels as tl WHERE l.id_logiciel = tl.id_logiciel GROUP BY l.id_logiciel ORDER BY nb_travaux DESC
Mais je n'arrive pas a mixer les 2 requêtes ensemble pour avoir dans la même requête, pour chaque logiciel , son nombre d'utilisateur et le nombre d'image.
Pourriez vous m'aider à finaliser cette requête.
Merci d'avance et bonne journée à tous
Je n'arrive pas à construire une requête sql qui interroge plusieurs tables et qui fait 2 counts.
JE vous explique le contexte, j'ai une table qui contient des nom de logiciels, une autre table avec des utilisateurs et une autre table avec des images.
Je veux afficher la liste des logiciels mais avec le nombre de personne qui utilise chaque logiciel et le nombre d'image qui ont été faite avec chaque logiciel.
Exemple : photoshop -> 10 utilisateur et 53 images.
J'arrive bien à faire une requête pour savoir combien j'ai d'utilisateur par logiciel :
SELECT l.*, count(c.id_client) as nb_clients FROM logiciels as l, competences as c WHERE l.id_logiciel=c.id_logiciel GROUP BY l.id_logiciel ORDER BY nb_clients DESC
J'arrive bien a faire une requette pour savoir combien d'images ont été faite avec chaque logiciel :
SELECT l.*, count(tl.id_travail) as nb_travaux FROM logiciels as l, travaux_to_logiciels as tl WHERE l.id_logiciel = tl.id_logiciel GROUP BY l.id_logiciel ORDER BY nb_travaux DESC
Mais je n'arrive pas a mixer les 2 requêtes ensemble pour avoir dans la même requête, pour chaque logiciel , son nombre d'utilisateur et le nombre d'image.
Pourriez vous m'aider à finaliser cette requête.
Merci d'avance et bonne journée à tous
Dernière édition par rhesus_plw le Lun Jan 25, 2010 15:21, édité 1 fois.
-

seebz - WRInaute impliqué

- Messages: 808
- Inscription: 15 Avr 2007
Re: PB requete SQL 3 tables + 2 count
Sans garantie, essaye ceci :
- Code: Tout sélectionner
SELECT l.*, count(c.id_client) as nb_clients, count(tl.id_travail) as nb_travaux
FROM logiciels l
LEFT JOIN competences c
ON l.id_logiciel=c.id_logiciel
LEFT JOIN travaux_to_logiciels tl
ON l.id_logiciel = tl.id_logiciel
GROUP BY l.id_logiciel
ORDER BY nb_clients DESC, nb_travaux DESC
- rhesus_plw
- Nouveau WRInaute

- Messages: 3
- Inscription: 25 Jan 2010
Re: PB requete SQL 3 tables + 2 count
Bonjour et merci de te pencher sur mon problème.
Ta requête ne génère pas d'erreur mais les résultats sont incorrects.
pour photoshop par exemple je devrai avoir comme résultat : 8 utilisateurs et 20 images mais avec ta requête j'obtiens 160 utilisateurs et 160 images.
Ta requête ne génère pas d'erreur mais les résultats sont incorrects.
pour photoshop par exemple je devrai avoir comme résultat : 8 utilisateurs et 20 images mais avec ta requête j'obtiens 160 utilisateurs et 160 images.
- jcaron
- WRInaute accro

- Messages: 2687
- Inscription: 13 Fév 2004
Re: PB requete SQL 3 tables + 2 count
Je dirais:
Pas testé, et comme d'habitude, il risque d'y avoir des problèmes avec les limitations de diverses versions de mysql sur les sous-requêtes...
Jacques.
- Code: Tout sélectionner
select l.*,u.nb,i.nb FROM logiciels l LEFT JOIN (SELECT c.id_logiciel,count(*) AS nb FROM competences c GROUP BY 1) u ON u.id_logiciel=l.id_logiciel LEFT JOIN (SELECT tl.id_logiciel,count(*) AS nb FROM travaux_to_logiciels tl GROUP BY 1) i ON i.id_logiciel=l.id_logiciel
Pas testé, et comme d'habitude, il risque d'y avoir des problèmes avec les limitations de diverses versions de mysql sur les sous-requêtes...
Jacques.
- rhesus_plw
- Nouveau WRInaute

- Messages: 3
- Inscription: 25 Jan 2010
Re: PB requete SQL 3 tables + 2 count
Merci Jacques, ta requête fonctionne très bien.
Quelles seraient d'après toi les limitations dont tu parles ? j'utilise Mysql en version 5.0.51a.
Merci et bonne journée.
Quelles seraient d'après toi les limitations dont tu parles ? j'utilise Mysql en version 5.0.51a.
Merci et bonne journée.
- jcaron
- WRInaute accro

- Messages: 2687
- Inscription: 13 Fév 2004
Re: [Résolu] PB requete SQL 3 tables + 2 count
Si ça marche alors pas de souci... Il y a certaines constructions avec des sous-requêtes qui ne passent pas dans certaines versions de mysql, c'est tout (et comme moi j'utilise postgresql et pas mysql, je ne les connais pas par coeur).
Jacques.
Jacques.
6 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Requete de classement SQL sur trois tables avec SUM, COUNT..
- Requete SQL sur 2 tables
- SQL Requête dans plusieurs tables
- Problème de jointure entre deux tables requête SQL
- Problème avec requête SQL multiple (3 tables) et comptage
- Requête SQL pour connexion entre 3 tables liées..
- un requête sql [Résolu]
- [Résolu] Requete SQL
- [résolu][sql] Requête avec WHERE
- [challenge] [résolu] Requete SQL galere
- Google API : guide de développement de l'API Google - 20-09-2002
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- Nombre moyen de mots par requête : statistiques AOL Août 2006 - 10-08-2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006 - 11-08-2006
- Informations sur l'infrastructure technique de Google - 01-11-2004
- Google indexe le Flash - 28-04-2004
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
