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

Requêtes et SQL. Discussion :

Aide pour réalisation requête


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Aide pour réalisation requête
    Bonjour,

    je cherche un peu d'aide pour la création d'une requête car je m'arrache les cheveux.

    J'ai 2 tables

    Table1 :

    OS PS Etat
    A1 Cx11 a
    A1 Cx21 a
    A1 Cx12 b
    A3 Cx11 c
    A3 Cx22 b

    Table2 :

    PS OIS
    Cx11 Cy1
    Cx12 Cy1
    Cx13 Cy1
    Cx14 Cy1
    Cx15 Cy1
    Cx21 Cy2
    Cx22 Cy2

    la relation entre les tables est la suivante Table1.PS = Table2.PS

    je voudrais le résultat suivant

    PS OIS Etat
    Cx11 Cy1 a
    Cx12 Cy1 b
    Cx13 Cy1
    Cx14 Cy1
    Cx15 Cy1

    Pour expliquer, je veux toutes les valeurs de la table 2 où OIS = Cy1 mais je veux aussi récupérer l'état dans la table 1 pour lesquelles OS = A1
    J'ai essayer plein requêtes SQL mais je n'arrive pas au bon résultat.
    Si quelqu'un a une idée.

    Merci beaucoup.

    Chacks

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonjour,

    Avec une sous-requête (en violet) ça devrait le faire:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table2.PS, Table2.OIS, sqT1.Etat
    FROM Table2 LEFT JOIN (SELECT PS, Etat FROM Table1 WHERE OS='A1') As sqT1 ON Table2.PS = sqT1.PS
    WHERE ((Table2.OIS) = 'Cy1')
    A+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci de ton aide.

    J'ai essayé mais j'ai toujours une erreur de syntaxe dans le FROM et je n'arrive pas à trouver pourquoi. Je continue à chercher. Merci

  4. #4
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Salut LedZeppII et Bienvenu Chacks86,

    on peut aussi résoudre de façon plus "classique"
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table2.PS, Table2.OIS, Table1.Etat
    FROM Table2 LEFT JOIN Table1 ON Table2.PS = Table1.PS
    WHERE (Table2.OIS="Cy1") AND ((Table1.OS="A1") OR (IsNull(Table1.OS)))


  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Bonjour et merci pour votre aide mais ça ne marche toujours pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table2.PS, Table2.OIS, Table1.Etat
    FROM Table2 LEFT JOIN Table1 ON Table2.PS = Table1.PS
    WHERE (Table2.OIS="Cy1") AND ((Table1.OS="A1") OR (IsNull(Table1.OS)))
    En fait la fin de la requête IsNull ne fonctionne pas car "Cy1" n'est pas rattaché uniquement à "A1" mais également à d'autes objets et c'est pour ça que le IsNull ne fonctionne pas.

    Si quelqu'un à une idée. Merci.

    Chacks86

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    En fait la fin de la requête IsNull ne fonctionne pas car "Cy1" n'est pas rattaché uniquement à "A1" mais également à d'autes objets et c'est pour ça que le IsNull ne fonctionne pas.
    tu pourrais expliquer à quoi est rattaché le champ OIS ("Cy1") ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 352
    Points : 415
    Points
    415
    Par défaut
    En testant chez moi, j'ai généré la requête suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Table2.PS, Table2.OIS, Table1.Etat
    FROM Table2 LEFT JOIN Table1 ON Table1.PS = Table2.PS
    WHERE (((Table2.OIS)="Cy1") AND ((Table1.OS)="A1" Or (Table1.OS) Is Null));
    ça m'affiche bien le résultat que tu souhaite

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci de votre aide, j'ai trouvé en faisant ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table2.PS, Table2.OIS, Table1.Etat
    FROM Table2 LEFT JOIN Table1 ON (Table1.PS = Table2.PS and Table1.OS="A1")
    WHERE ((Table2.OIS)="Cy1");
    Merci encore.

    Chacks86

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

Discussions similaires

  1. Demande d'aide pour réalisation d'une requête SQL
    Par etiennegaloup dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/10/2013, 08h54
  2. J'ai besoin de votre aide pour une requête
    Par ovdz dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/05/2005, 11h42
  3. Demande d'aide pour une requête
    Par arkzor dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/12/2004, 02h40
  4. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 11h56
  5. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 15h38

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