Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
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 23/05/2011, 10h22   #1
Invité de passage
 
Inscription : février 2011
Messages : 48
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 48
Points : 1
Points : 1
Par défaut afficher les champs nuls

Bonjour j'ai une requete qui ne m'affiche pas le résultats du champs nul

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT D.lcat_ens,F.letat,COUNT(DISTINCT H1.ienseignant) 
FROM histo_etats_enseignants H1
INNER JOIN enseigne C ON C.ienseignant = H1.ienseignant 
INNER JOIN enseignant E ON E.ienseignant = H1.ienseignant
RIGHT OUTER JOIN cat_ens D ON D.icat_ens = c.icat_ens /*(c'est cette jointure qui n'est pa prise en compte)*/
RIGHT OUTER JOIN etat F ON h1.ietat = F.ietat 
AND 	E.idep = '33'
AND	H1.date_effet_ens IN (
SELECT 	MAX(H2.date_effet_ens) FROM histo_etats_enseignants H2
WHERE	H1.ienseignant = H2.ienseignant
AND 	H2.date_effet_ens <= '10/10/2009')
AND 	(C.date_deliv_ens <= '10/10/2009' OR C.date_deliv_ens IS NULL)
GROUP BY F.ietat,F.letat,D.lcat_ens
voila l'affichage du résultat de la requete

Citation:
categorie|etat|nombre

"A ";"Inactif";20
"B ";"Inactif";211
"C";"Inactif";24
"D";"Inactif";62
"A";"Valide";107
"B";"Valide";306
"C";"Valide";61
"D";"Valide";179
"";"Suspension";0 /*elle n'affiche pas les catégorie A,B,C,D quand c'est nul*/
"A";"Annuler";108
"B";"Annuler";106
"C";"Annuler";91
"D";"VAnnuler";19
et moi je veux qu'elle affiche

Citation:
"A ";"Suspension";0
"B ";"Suspension";0
"C";"Suspension";0
"D";"Suspension";0
quand le nombre est 0 elle n'affiche pas les catégorie de cet etat
Si quelqu'un peut m'aider

Merci d'avance
souf_87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 10h51   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
C'est pas plutôt un LEFT qu'il faut faire ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 10h53   #3
Invité de passage
 
Inscription : février 2011
Messages : 48
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 48
Points : 1
Points : 1
Non que ça soit un left un RIGHT ou juste un join ça me donne le meme résultat
souf_87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 11h32   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
et :
Code :
1
2
RIGHT OUTER JOIN cat_ens D ON D.icat_ens = c.icat_ens /*(c'est cette jointure qui n'est pa prise en compte)*/
LEFT OUTER JOIN etat F ON h1.ietat = F.ietat
Ou


Code :
1
2
RIGHT OUTER JOIN etat F ON h1.ietat = F.ietat
RIGHT OUTER JOIN cat_ens D ON D.icat_ens = c.icat_ens /*(c'est cette jointure qui n'est pa prise en compte)*/
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 11h34   #5
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Sinon, tu dois aussi pouvoir sortir le MAX pour éviter la sous-requête:
Code :
1
2
3
4
5
6
7
8
9
10
SELECT D.lcat_ens,F.letat,COUNT(DISTINCT H1.ienseignant) ,MAX(H1.date_effet_ens)
FROM histo_etats_enseignants H1
INNER JOIN enseigne C ON C.ienseignant = H1.ienseignant 
INNER JOIN enseignant E ON E.ienseignant = H1.ienseignant
RIGHT OUTER JOIN cat_ens D ON D.icat_ens = c.icat_ens /*(c'est cette jointure qui n'est pa prise en compte)*/
RIGHT OUTER JOIN etat F ON h1.ietat = F.ietat 
AND 	E.idep = '33'
AND 	H1.date_effet_ens <= '10/10/2009')
AND 	(C.date_deliv_ens <= '10/10/2009' OR C.date_deliv_ens IS NULL)
GROUP BY F.ietat,F.letat,D.lcat_ens
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 11h55   #6
Invité de passage
 
Inscription : février 2011
Messages : 48
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 48
Points : 1
Points : 1
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT D.lcat_ens,F.letat,COUNT(DISTINCT H1.ienseignant) 
FROM histo_etats_enseignants H1
 
INNER JOIN enseigne C ON C.ienseignant = H1.ienseignant 
 
INNER JOIN enseignant E ON E.ienseignant = H1.ienseignant
 
RIGHT OUTER JOIN cat_ens D ON D.icat_ens = c.icat_ens /*(c'est cette 
jointure qui n'est pa prise en compte)*/
 
RIGHT OUTER JOIN etat F ON h1.ietat = F.ietat 
AND 	E.idep = '33'
 
AND	H1.date_effet_ens IN (
SELECT 	MAX(H2.date_effet_ens) FROM histo_etats_enseignants H2
WHERE	H1.ienseignant = H2.ienseignant
AND 	H2.date_effet_ens <= '10/10/2009'
 
)
 
AND 	(C.date_deliv_ens <= '10/10/2009' OR C.date_deliv_ens IS NULL)
GROUP BY F.ietat,F.letat,D.lcat_ens
sa n'a rien à voir avec la sous requete,la sous requete m envoie juste une date, elle est correcte.c'est la jointure sur la table cat_ens, je veux afficher tout les etats(table etat) pour tout les catégories(table cat_ens) et je suis obligé pour faire une jointure sur la table cat_ens parceque c'est la ou j'ai les libelles des catégorie et que je dois afficher
souf_87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 11h58   #7
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par souf_87 Voir le message
sa n'a rien à voir avec la sous requete,la sous requete m envoie juste une date, elle est correcte.
Oui je sais bien mais il est pas interdit d'améliorer la requête par ailleurs

orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 12h12   #8
Invité de passage
 
Inscription : février 2011
Messages : 48
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 48
Points : 1
Points : 1
ça renvoi pas les memes résultats qd je fais un max de date dans le select,et je veux pas afficher la date mon probleme c'est la jointure.

comment prendre en compte de tout les catégories et tout les états meme si leurs nombre est nul ?
souf_87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h03.


 
 
 
 
Partenaires

Hébergement Web