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 :

Requête complexe : probable jointure externe


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 28
    Points
    28
    Par défaut Requête complexe : probable jointure externe
    Bonjour,

    Je suis en stage et je suis bloqué sur une requête que je juge complexe.

    Je travaille sur une base de données portant sur l'élevage de bovins.
    Une commande est passé est passé et concerne un ou 2 taureaux. Je dois

    rédiger une requête qui fourni le nom, le numéro de travail, le stock réservé,

    le stock achat du taureau 1 et/ou du taureau 2.

    Une dose est réservé et acheté par un élevage qui a passé la commande

    Voici les tables (uniquement les données utiles)

    Commande (
    CDE_NUM -clé primaire-
    ELV_NUCHEP -numéro de l'élevage = client
    TAS_NUNATI_1 : N° du taureau 1 concerné par la commande
    TAS_NUNATI_2 : N° du taureau 2 éventuellement concerné par la

    commande)

    Elevage
    (ELV_NUCHEP -numéro de l'élevage = client
    ...
    )

    DoseAchatée
    (ELV_NUCHEP -numéro de l'élevage = client
    TAS_NUNATI : N° du taureau pour lequel l'achat de doses a été effectué
    ACHAT_NBDOSE : Nb de doses achetés
    ...)


    DoseReservée
    (ELV_NUCHEP -numéro de l'élevage = client
    TAS_NUNATI : N° du taureau pour lequel l'achat de doses a été effectué
    ACHAT_NBDOSE : Nb de doses reservés
    ...)

    Je suppose qu'il faut utiliser une jointure externe, mais j'ai du mal à

    obtenir le résultat escompté.

    Si vous pouviez m'aider à rédiger la requête, cela me serait très utile car je

    ne peux pour le moment pas continuer mon travail

    Merci

  2. #2
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    Bonjour,
    Plusieurs choses me choquent dans le modèle :
    - Les champs TAS_NUNATI_* limitent le nombre de taureaux par commande à 2, es-tu absolument certain de vouloir faire cela ? ne manque t-il pas une table (COMMANDE_TAUREAU) ?
    - Pourquoi avoir 2 tables Dose*, 1 seule ne suffirait-elle pas ? cela est peut-être justifié par les champs dont nous n'avons pas connaissance
    - Es-tu sûr que les tables Dose* doivent faire référence à un élevage et pas à une commande ?

    Concernant la requête, si j'ai bien compris ce que tu veux tu devrais effectivement des jointures externes du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    COMMANDE 
       LEFT OUTER JOIN DoseAchatee as DA1 on COMMANDE.TAS_NUNATI_1=DA1.TAS_NUNATI and COMMANDE.ELV_NUCHEP=DA1.ELV_NUCHEP
       LEFT OUTER JOIN DoseReservee as DR1 on COMMANDE.TAS_NUNATI_1=DR1.TAS_NUNATI and COMMANDE.ELV_NUCHEP=DR1.ELV_NUCHEP
    ...
    Peux-tu nous montrer ce que tu as déjà fait, même s'il ne s'agit que d'une ébauche ?
    Je penche, donc je suis

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    En fait, il s'agit de données relatives à de l'insémination sur des bovins.
    Ce qui explique certaines bizzaries difficiles à comprendre (une donse est réservée par un élevage et pas affecté à une commande, limitations à 2 taureaux). J'ai essayé de simplifier au maximum le modèle de données.

    Il y a une table TAUREAUX qui recence les caractéristiques des taureaux, mais selon toutes vraisemblances, il n'y a pas de champs utiles dans cette table pour cette requête.

    J'essaye tout ça. Pour le moment, je n'ai plus de requêtes avec jointure externe sous le coude. J'ai fait tant d'essayé que je suis parti dans des requêtes bizzares.

    Mais naturellement, je t'informerai du résultat.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    Il me semble que ça marche. C'était pas si dur que ça. Mais vu que je n'est pratiquement fait de "jointure externe", j'avais du mal à savoir comment me débrouiller.

    J'afficherais [resolu], une fois que mon responsable aura validé mon travail.
    La requête qui posait problème, est juste un bout d'une requête bien plus complète.

    Merci

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

Discussions similaires

  1. [MySQL] requête SQL de jointure externe
    Par makamine dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/05/2011, 12h10
  2. [AC-2003] Problème car trop de requêtes avec des jointures externes ?
    Par KriKri dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 13/08/2009, 18h49
  3. Une requête avec des jointures externes
    Par Sopra dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/07/2009, 17h28
  4. Requête avec jointure externe complexe
    Par dpin33 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 04/03/2008, 13h41
  5. Réponses: 24
    Dernier message: 24/07/2007, 17h48

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