Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2667 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

   Requête complexe : probable jointure externe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requête complexe : probable jointure externe

n°1578571
The_VeryNo​vice
Posté le 24-06-2007 à 20:07:19  profilanswer
 

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

mood
Publicité
Posté le 24-06-2007 à 20:07:19  profilanswer
 

n°1578694
MagicBuzz
Posté le 25-06-2007 à 09:43:10  profilanswer
 

Oh putain, la modélisation de bovin [:cerveau heink]  
 
 
Hormis l'horreur qu'est le modèle de la base (je reviens de chez le véto, mon chien s'est étouffé en vomissant), je ferais une requête de ce genre :
 

Code :
  1. SELECT *
  2. FROM Commande c
  3. INNER JOIN elevage e ON e.ELV_NUCHEP = c.ELV_NUCHEP
  4. INNER JOIN DoseAchatée d1 ON d1.ELV_NUCHEP = c.ELV_NUCHEP AND d1.TAS_NUNATI = c.TAS_NUNATI_1
  5. INNER JOIN DoseReservée r1 ON r1.ELV_NUCHEP = c.ELV_NUCHEP AND r1.TAS_NUNATI = c.TAS_NUNATI_1
  6. LEFT OUTER JOIN DoseAchatée d2 ON d2.ELV_NUCHEP = c.ELV_NUCHEP AND d2.TAS_NUNATI = c.TAS_NUNATI_2
  7. LEFT OUTER JOIN DoseReservée r2 ON r2.ELV_NUCHEP = c.ELV_NUCHEP AND r2.TAS_NUNATI = c.TAS_NUNATI_2

n°1578707
The_VeryNo​vice
Posté le 25-06-2007 à 09:57:25  profilanswer
 

Le modèle de données est bizzare, car j'ai pas présenté le contexte. Il s'agit plus précisémment d'une base de données relatives aux inséminations bovines (lol !). J'ai simplifié le modèle, mais il y a de nombreuses règles de gestions particulières.
 
J'essaye ça, et je te dis le résultat.

n°1578711
MagicBuzz
Posté le 25-06-2007 à 10:10:08  profilanswer
 

Ouais, nan mais ça change rien que ce soit un MCD pour de l'insémination bovine, les bijoux de la soeur du pape ou une simple gestion de commandes.
 
Identifiant "elevage" présent à la fois dans la table "commende" et les tables filles "dose" : redondance = abération
 
2 identifiants de bovins dans une entête de commande = modèle figé à 1 ou 2 bovins par commande, avec obligation de passer par une jointure externe : abération
 
Doses réservées et doses achetées = même information, même structure. 2 tables pour ça = 3° abération :o

n°1578726
The_VeryNo​vice
Posté le 25-06-2007 à 10:56:00  profilanswer
 

Nan, je suis désolé.
Il y a des nuances entre dose commandée et une dose reservée (une histoire de quotat). Et une dose est reliée à un élevage et non pas à une commande.
 
Pour le résultat, de la requête. La BD est pour le moment HS. Donc je peux pas te dire

n°1578730
MagicBuzz
Posté le 25-06-2007 à 11:04:21  profilanswer
 

(en l'occurence, là ton liens c'est sur le numéro du taureau, qui est de facto lié à un élevage j'imagine :spamafote:)
 
et c'est pas parcequ'il y a des propriétés en plus ou en moins que ça peut pas être les mêmes tables. tu peux tout à fait ajouter une CIF en 0,n pour compléter les deux cas.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

   Requête complexe : probable jointure externe

 

Sujets relatifs
executer une appli externe[SQL 2005] Problème pour une requête SELECT
besoin d'aide pour requete mysql[MySQl] erreur bizarre dans une requete
[Java]Problème de recharge d'une JTable avec le résultat d'une requêteRequête LDAP
[Résolu]Requete selection d'historique[SQL Server 2005] Accès au donnée par requete SQL en VB
Jointure multiplerequete php
Plus de sujets relatifs à : Requête complexe : probable jointure externe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR