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 11/05/2011, 14h13   #1
Invité de passage
 
Khaled AMRI
Inscription : juillet 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Khaled AMRI

Informations forums :
Inscription : juillet 2010
Messages : 11
Points : 2
Points : 2
Par défaut Compter le nombre des elements qui n'existe pas dans un tableau

Salut tout le monde
Tout d'abord voici les deux tables que j'utilise
artwork(nom_artwork, nom_org, auteur, nbrActeur)
artshow(#nom_artwork, num_artshow,date_artshow,thea_show)

le tableau artwork contient les artworks et le table artshow contient les shows de chaque artwork.

mon problème c'est que je veut avoir une liste des artworks et le nombre ses artshows même si un artwork n'admet pas d'artshow.

Voici la requête que j'ai trouvé:
Code :
1
2
3
4
5
SELECT o.nom_org, a.nom_artw ,a.nbr_act , COUNT(s.thea_show)  
FROM artwork a, organisme o,artshow s 
WHERE o.num_org=a.num_org 
AND s.nom_artw=a.nom_artw 
GROUP BY s.nom_artw
Mais cette requête retoune la liste des artworks et les nbr de ses shows qui existent dans le tableau artshow uniquement mais pas tout les artworks.

J'attends vos propositons
et Merici
kldamr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 14h38   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
Cette requête est un horreur !

Les jointures s'écrivent depuis 1992 avec l'opérateur JOIN !

Les colonnes ne faisant pas l'objet d'une fonction de regroupement dans le SELECT doivent être présentes dans le GROUP BY. Un vrai SGBDR autre que MySQL aurait refusé cette requête !

Tant que j'y suis, j'ajoute que la clé primaire nom_artwork est contre-performante !

Pour avoir tous les artworks même s'il n'y a pas d'artshow, il te faut une jointure externe.

Comme ça, ça devrait mieux fonctionner :
Code :
1
2
3
4
5
SELECT o.nom_org, a.nom_artw, a.nbr_act, COUNT(s.thea_show) AS nombre_thea_show
FROM artwork a
INNER JOIN organisme o ON o.num_org = a.num_org 
LEFT OUTER JOIN artshow s ON s.nom_artw = a.nom_artw
GROUP BY a.nom_artw, a.nbr_act, o.nom_org
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil 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 07h56.


 
 
 
 
Partenaires

Hébergement Web