IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Requête et affichage des valeurs nulles


Sujet :

SQL Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Points : 0
    Points
    0
    Par défaut Requête et affichage des valeurs nulles
    Bonsoir,
    Je viens vers vous pour m'aider à résoudre un problème dans ma requête.
    Celle-ci sort 4 colonnes : DATJOUR, CODELIEU, BESOIN, EFFJOUR

    Le problème est le suivant. Lorsque que EFFJOUR est égal à 0 ou est nul, la date, le codelieu et le besoin ne s'affichent pas dans le résultat.
    Par exemple, je devrais avoir une ligne pour le 04/01 avec un besoin à 1 et EFFJOUR à 0 ou null

    Pouvez-vous m'aider ?
    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT S6PBPOS.DATJOUR, S6PBPOS.CODELIEU, max(S6PBPOS.EFFMINI) as besoin,SUM(HOPHJOU.IJQHSMAEXO/60/12) as EFFJOUR
    FROM  S6PBPOS, HOPHJOU, HOPEMPL,HOPHABS,S6PPLGT
    WHERE SUBSTR( S6PBPOS.CODELIEU,0,3)='SPO'
    AND HOPHJOU.DAT = S6PBPOS.DATJOUR
    AND HOPHJOU.MATRI = HOPEMPL.MATRI
    AND HOPEMPL.MATRI = HOPHABS.MATRI
    AND S6PBPOS.DATJOUR = HOPHABS.DAT
    AND HOPHABS.MOTIF = S6PPLGT.ACTGT
    AND S6PBPOS.CODELIEU = S6PPLGT.CODELIEU
    AND EXTRACT(YEAR FROM S6PBPOS.DATJOUR)= 2015 AND EXTRACT( MONTH FROM S6PBPOS.DATJOUR) = 1
    AND S6PBPOS.CODELIEU in ('SPOEOGVJCA')
    AND HOPHJOU.JOUR in ( 6,7)
    GROUP BY S6PBPOS.DATJOUR, S6PBPOS.CODELIEU

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    C'est sans doute une question de jointure externe, mais difficle d'en dire plus face à une requête aussi difficile à lire.
    Cela fait des lustres que les jointures ne s'écrivent plus comme des restrictions sur un produit cartésien.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Points : 0
    Points
    0
    Par défaut
    Je ne sais pas comment faire pour améliorer cette requête

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Pour en savoir plus sur les jointures, c'est par ici.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Points : 0
    Points
    0
    Par défaut
    Merci, j'ai déjà regardé ce lien. J'ai vu l'exemple avec left outer join. avec 2 tables je parviens à comprendre.
    Mais dans mon exemple j'ai beaucoup de tables.

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Points : 0
    Points
    0
    Par défaut
    J'ai essayé avec du LEFT OUTER JOIN, mais en vain.
    Il n'y a pas une solution simple pour récupérer les dates ou il n'y a pas d'effectif.
    merci

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Points : 0
    Points
    0
    Par défaut
    J'ai essayé avec ceci, mais les dates pour lesquels il n'y a pas d'effectif n’apparaissent pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    SELECT S6PBPOS.DATJOUR,
      S6PBPOS.CODELIEU,
      MAX(S6PBPOS.EFFMINI) AS besoin,
      SUM(HOPHJOU.IJQHSMAEXO/60/12) as EFFJOUR
      FROM S6PBPOS
    LEFT OUTER JOIN HOPHJOU
    ON S6PBPOS.DATJOUR = HOPHJOU.DAT
    LEFT OUTER JOIN HOPEMPL
    ON HOPHJOU.MATRI = HOPEMPL.MATRI
    LEFT OUTER JOIN S6PPLGT
    ON S6PBPOS.CODELIEU = S6PPLGT.CODELIEU
    LEFT OUTER JOIN HOPHABS
    ON HOPHJOU.DAT                          = HOPHABS.DAT
    WHERE HOPHABS.MOTIF                     = S6PPLGT.ACTGT
    AND HOPEMPL.MATRI = HOPHABS.MATRI
    AND SUBSTR(S6PBPOS.CODELIEU, 0, 3)      = 'SPO'
    AND Extract(YEAR FROM S6PBPOS.DATJOUR)  = 2015
    AND Extract(MONTH FROM S6PBPOS.DATJOUR) = 1
    AND S6PBPOS.CODELIEU                   IN ('SPOEOGVJCA')
    AND HOPHJOU.JOUR                       IN (6, 7)
    GROUP BY S6PBPOS.DATJOUR,
      S6PBPOS.CODELIEU

  8. #8
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Il n'a pas de jointure externe dans votre requête d'origine.
    L'écriture ANSI est dans 99% des cas un mythe avec Oracle qui retransforme vos requêtes ANSI à sa manière avant de les optimiser.
    Pourriez-vous poster juste un exemple de ce qui ne va pas dans vos résultats ?

    /Edit
    Mieux encore un petiot jeux d'essaye qui reproduit votre problème.

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Points : 0
    Points
    0
    Par défaut
    Voici ce que me retourne la requête pour le mois de janvier 2015.
    03/01/15 SPOEOGVJCA 1 1
    10/01/15 SPOEOGVJCA 1 1
    11/01/15 SPOEOGVJCA 1 1
    17/01/15 SPOEOGVJCA 1 1
    18/01/15 SPOEOGVJCA 1 1
    24/01/15 SPOEOGVJCA 1 2

    Par exemple sur la date du 04/01 j'ai un besoin à 1 mais je n'ai pas d'effectif.
    Je souhaiterais que la date apparaisse avec un 0 dans la colonne effectif.

    Merci

  10. #10
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Bref cela s’appelle la densification des données. J’ai connais deux techniques pour cela :

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Points : 0
    Points
    0
    Par défaut
    Merci à vous mais je ne sais pas faire.

  12. #12
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par jopont Voir le message
    Merci à vous mais je ne sais pas faire.
    Dans ce cas il va falloir nous donner un jeu d'essai complet:
    requêtes sql de création des tables impliqué par la requête
    requêtes sql pour insérer quelques données représentatives pour votre problème
    et de repréciser le résultat attendu

Discussions similaires

  1. [JPGraph] Affichage des valeurs nulles.
    Par anto2b dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 09/04/2012, 19h10
  2. [2K8] NON AFFICHAGE DES VALEURS NULLES
    Par MELIGEO dans le forum SSAS
    Réponses: 0
    Dernier message: 18/06/2010, 15h18
  3. Pas d'affichage des valeurs nulles avec un COUNT
    Par phoenixz22 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 30/05/2007, 18h39
  4. [SQL] Affichage des valeurs nulles dans un Count
    Par at_first dans le forum Access
    Réponses: 4
    Dernier message: 06/03/2007, 11h07
  5. Affichage des valeurs des variables avec tkprof
    Par hkhan13 dans le forum Oracle
    Réponses: 2
    Dernier message: 04/07/2006, 11h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo