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

Langage SQL Discussion :

Pb de requete avec un champ vide ou pas


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut Pb de requete avec un champ vide ou pas
    Bonjour,

    J'ai cette requete, qui fonctionne bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select date_cle.date_cle_date, emplacement.emplacement_nom
    from date_cle, emplacement
    where date_cle.offre_id = 450
    and date_cle.emplacement_id = emplacement.emplacement_id
    Par contre, pour certains enregistrements, le champ date_cle.emplacement_id est vide. Dans ce cas, l'enregistrement n'apparait pas dans le resultat de la requete, ce qui est normal.

    Mais je veux quand meme recuperer les dates sans enregistrements, dont je pensais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select date_cle.date_cle_date, emplacement.emplacement_nom
    from date_cle, emplacement
    where date_cle.offre_id = 450
    and date_cle.emplacement_id = emplacement.emplacement_id or date_cle.emplacement_id is null
    Mais dans ce cas, j'ai le produit cartesien de tous les enregistrements avec le bon offre_id par tous les emplacement_id existants.

    Comment faut il faire pour obtenir toutes les date cle, et l'emplacement correspondant dans le cas ou il est indiqué?

    Merci

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    As-tu essayé ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select date_cle.date_cle_date, emplacement.emplacement_nom 
    from date_cle LEFT OUTER JOIN emplacement ON (date_cle.emplacement_id = emplacement.emplacement_id)
    where date_cle.offre_id = 450
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    J'ai pour habitude de faire les jointures ds le where, mais j'ai quand meme essayé et ca ne marche pas.
    J'ai testé avec un requete tte bete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select date_cle.date_cle_id
    from date_cle natural join type_date_cle using( type_date_id)
    J'ai cette erreur (sous oracle) :
    ORA-00900 : invalid SQL statement

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Points : 83
    Points
    83
    Par défaut
    Essaye la jointure externe. Perso sous Oracle, je fais ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select date_cle.date_cle_date, emplacement.emplacement_nom
    from date_cle, emplacement
    where date_cle.offre_id = 450
    and date_cle.emplacement_id (+)= emplacement.emplacement_id
    Bon courage
    Ciao

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Je viens de tester : ca ne me met que les dates ou l'emplacement contient une valeur...

    J'avais jamais vu cette syntaxe, tu connais un site ou elle est détaillée?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Points : 83
    Points
    83
    Par défaut
    Excuse moi c dans l autre sens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select date_cle.date_cle_date, emplacement.emplacement_nom
    from date_cle, emplacement
    where date_cle.offre_id = 450
    and  emplacement.emplacement_id (+) = date_cle.emplacement_id
    Regarde ca sinon donne nous la structure de tes tables car la je vois pas.
    La jointure externe prends tous les tuples de la table que tu joins plus les tuples communs.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Ca marche nickel!

    Merci, mais tu ne m'as pas dit, tu sais ou trouver de la doc sur cette syntaxe?

    Merci encore

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 82
    Points : 73
    Points
    73
    Par défaut
    le + n'est pas un standard de SQL.
    donc évite le.
    regarde du coté des jointures externes à gauche ou à droite pour ton probleme, je ne connais pas la synthaxe exacte.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par aaronw
    regarde du coté des jointures externes à gauche ou à droite pour ton probleme, je ne connais pas la synthaxe exacte.
    Oui, et j'ai de grosses lacunes a ce niveau, il va falloir que je me penche serieusement sur le sujet!

  10. #10
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par linou
    J'avais jamais vu cette syntaxe, tu connais un site ou elle est détaillée?
    Dans les tutoriels de SQLPro, sur ce site même
    cf http://sql.developpez.com/sqlaz/jointures/

    problème pour les Oraclistes (dont tu fais partie) : elle n'est supportée sous Oracle qu'à partir de la version 9 (cf commentaires à la fin de l'article).
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    En effet, je connais cet article, et il parle meme de ce fameux (+) que je decouvrais hier, je n'avais pas fait attention...
    Merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Requete avec plusieurs champs vides
    Par Hyperboreios dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 20/11/2012, 17h03
  2. Requete avec des champs vide
    Par martha91 dans le forum Access
    Réponses: 1
    Dernier message: 05/03/2008, 17h00
  3. [SELECT] Faire un select avec des champs vides
    Par MinsK dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/08/2005, 01h05
  4. tri avec les champs vides en dernier
    Par r-zo dans le forum Requêtes
    Réponses: 11
    Dernier message: 03/09/2003, 14h40

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