[MySQL] Problème avec Jointure ( et plusieurs COUNT sur même table)

Problème avec Jointure ( et plusieurs COUNT sur même table) [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 20-02-2008 à 14:59:10    

Salut tout le monde,
je post sur le forum car j'arrive pas à réaliser ce que je souhaite.
Je vais exposer la situation :
Dans ma base, on a des cours `session`, et les `membres` reliés par la table `inscription` dans lequel un attribut vient se greffer : etat , validée si 1 , non validée si 0.
 
Mon objectif est en une requete, de trouver le nombre d'inscription validée et non-validée par session.
 
Le problème que j'ai rencontré est que lorsqu'il manque un des types d'inscrit pour une session, ça ne m'affiche pas la ligne au lieu de me l'afficher avec Val=0 ou nVal=0.
 
voilà ce que j'ai pour l'instant :
 
SELECT *,
COUNT(DISTINCT val.id_membre) AS val,
COUNT(DISTINCT nval.id_membre) AS nval
FROM `session`
LEFT JOIN `inscription`AS val ON val.id_session = session.id_session
LEFT JOIN `inscription`AS nval ON nval.id_session = session.id_session
WHERE val.etat=1
AND nval.etat=0
GROUP BY `session`.id_session
 
En clair, il faudrai que SQL compte quand même 0 lorsqu'il n'y a pas de ligne correspondante à la recherche dans les inscriptions au lieu de dégager completement une ligne.
 
en clair je souhaite obtenir des lignes :
id_session | ...(tout les champs session)... | Val | nVal
pour chacune des sessions, dans l'état actuelle, la requette ne me retourne que ceux qui ont des inscriptions validées ET des inscriptions non validées.
 
Merci beaucoup!


Message édité par QireX le 20-02-2008 à 15:00:22
Reply

Marsh Posté le 20-02-2008 à 14:59:10   

Reply

Marsh Posté le 20-02-2008 à 15:01:39    

avec des COUNT, ca va pas le faire  
 
mais si ta colonne contient 0 et 1? tu peux peut etre le faire avec des SUM  
 
SEELCT id_session, SUM(val),SUM(nval)  
FROM session LEFT JOIN inscription ON val.id_session = session.id_session  
 


---------------

Reply

Marsh Posté le 20-02-2008 à 15:04:25    

conditions dans le where sur des tables "left-jointer" = transformation en inner join.
Voir là: http://forum.hardware.fr/hfr/Progr [...] 1691_1.htm

 

edit:
count remontera 0 même si il n'y a pas de correspondances pas besoin de faire sum :o


Message édité par anapajari le 20-02-2008 à 15:05:44

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 20-02-2008 à 15:10:15    

je n'ai pas tout compris de ta réponse anapajari  :sarcastic: , saurais-tu me "mâcher le travail" ?  :whistle:  
 
Merci pour les réponses aussi rapides.

Reply

Marsh Posté le 20-02-2008 à 15:10:32    

sauf que pour le cout, je ne fait plus qu'une jointure au lieu de deux :d


---------------

Reply

Marsh Posté le 20-02-2008 à 15:57:41    

QireX a écrit :

saurais-tu me "mâcher le travail" ?  :whistle:


euh ... biensur mais je facture 100€ de l'heure ... :/
Je vois pas ce qu'il y a de dure à virer les conditions mises dans le where pour les mettre dans les ON correspondants.
D'ailleurs sur le lien filé, c'est tout marqué, t'as juste à adapter.
 
flo>Ouais bon ok [:dawak] mais à ce moment là je ferais un case when dans le sum pour ne pas avoir à m'emmerder avec la "vraie" valeur.


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed