Bonjour, je suis en train de me battre depuis des heures avec une requete SQL ... et ce n'est pas moi qui gagne pour l'instant :-(
J'ai deux tables :
1 : equipements
2 : attribution
( avec un champ ID_equipement dans les attributions pour la liaison).
dans la table 2 je liste a quelles places sont attribués des .
équipements.
Il est possible d'avoir des doublons dans la table attribution, si un equipement a été attribué à diverses places durant sa vie.
Je désire connaitre la liste des equipements disponibles, c'est a dire :
---> les equipements qui n'existent pas dans les attributions et ceux qui n'ont pas de ligne avec la valeur NULL dans date de fin attribution.
J'arrive a lister les equipements sans aucune attribution avecpar contre je ne vois pas comment faire pour trouver les attributions qui ne sont pas terminées...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT dbo.Equipement.Equipement_ID, dbo.Equipement.Equipement_Description, dbo.Equipement.Equipement_Constructeur, dbo.Attribution.Attribution_Date_Depart, dbo.Attribution.Attribution_Date_Fin, dbo.Attribution.Attribution_ID FROM dbo.Equipement LEFT OUTER JOIN dbo.Attribution ON dbo.Equipement.Equipement_ID = dbo.Attribution.Attribution_Equipement WHERE (dbo.Attribution.Attribution_ID IS NULL)
Exemple :
Dans les ligne ci-dessus je dois pouvoir sortir que la ligne 4, vu que l'attribution est finie alors que pour l'équipement 12, il a toujours une attribution en cours (ligne 3 , pas de date de fin).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ID Empl. Equip. DateDeb DateFin 1 123 12 12.12.08 20.12.08 2 144 12 12.12.09 21.12.09 3 133 12 01.07.09 4 112 15 12.06.09 23.07.09
C'est sur cette requête que je bloque.
... et là , question subsidiaire, je ne sais si c'est possible, de combiner les deux requêtes ci-dessus de manière à n'avoir qu'un seul résultat qui va comprendre :
tous les equipements qui n'on jamais étés attribués, pas de ligne dans attribution ET les equipements libres, qui n'ont pas de ligne NULL dans la table attribution (selon la deuxième requête ci-dessus).
Je ne sais pas si j'ai été assez clair dans mes explications
Meilleures salutations et bon week-end !
Olivier
Partager