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 :

Problème de requête


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 41
    Points
    41
    Par défaut Problème de requête
    Bonjour, dans le cadre de mon stage, je doit effectuer une requête mais j'ai aucune idée comment mit prendre. Je vous explique

    Il y a une table qui possède un PK ( séquence ) et 4 champ qui son unique ensemble(
    noDossier, noElem, Code, et un autre que je me souvient plus). En gros, la requête doit retourné tous les enregistrements que le Code est 'DE' seulement s'il n'y a pas un autre enregistrement avec les autres champs de la clé unique ( noDossier, noElem et l'autre ...) identique à celui là.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Si j'ai bien compris, tu cherches les lignes de la table dont l'ensemble (noDossier, noElem, AutreColonneOubliee) est différent des lignes dont la colonne Code = 'DE' ?

    Il faut faire une auto-jointure externe. On va procéder par étapes...

    1) Lignes de la table dont Code = 'DE'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT sequence, noDossier, noElem, AutreColonneOubliee
    FROM latable
    WHERE Code = 'DE'
    2) Lignes qui sont différentes de celles de la première requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT t1.sequence, t1.noDossier, t1.noElem, t1.AutreColonneOubliée
    FROM latable t1
    LEFT OUTER JOIN (
       SELECT sequence, noDossier, noElem, AutreColonneOubliee
       FROM latable
       WHERE Code = 'DE'
    ) t2 ON t1.noDossier = t2.noDossier 
      AND t1.noElem = t2.noElem
      AND t1.AutreColonneOubliee = t2.AutreColonneOubliee
    WHERE t1.Code <> 'DE'
      AND t2.sequence IS NULL
    A essayer.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 41
    Points
    41
    Par défaut
    Salut, merci de ta réponse mais je croi que tu ma mal comprit. J'ai trouver une solution qui fonction ( je croit ) et javait oublier de présisé que je suis sous oracle ( je ne sais pas si MINUS et seulement pour oracle ?? )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    SELECT no_dos, no_elm_cav, cle
    FROM ecr_donnees_caviard 
    WHERE no_dos = no_dos
    AND code_caviard = 'DE'
     
    MINUS
     
    SELECT no_dos, no_elm_cav, cle
    FROM ecr_donnees_caviard 
    WHERE no_dos = no_dos
    AND code_caviard = 'PR'

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Tant mieux si ça fonctionne mais ta requête comporte quand même un truc bizarre et inutile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FROM ecr_donnees_caviard 
    WHERE no_dos = no_dos
    From 1 seule table donc WHERE no_dos = no_dos sera toujours vrai.
    Et s'il y avait deux tables, il vaudrait mieux faire une jointure normalisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FROM table1
    JOIN table2 ON condition de jointure

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 41
    Points
    41
    Par défaut
    Oup dsl jlé mal copier c'est no_dos = noDossier ( noDossier est un paramètre )

Discussions similaires

  1. Réponses: 19
    Dernier message: 27/08/2003, 15h32
  2. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  3. Problème de requètes concurentes
    Par Emmanuel.G dans le forum XMLRAD
    Réponses: 3
    Dernier message: 08/08/2003, 16h51
  4. Réponses: 2
    Dernier message: 16/07/2003, 14h40
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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