j'ai 3 tables3 jointures et clause where ensemble
bl_main (bl_id UNIQUE, bl_area)
bl_details (bl_id UNIQUE, name)
bl_data(bl_id, month, paper_tons, bottles_tons)
bl_id
est pas unique dans la dernière table. Il y aura plusieurs lignes de même bl_id
.
Je suis en train de récupérer des données de la manière suivante
bl_id | name | bl_area | sum(paper_tons) | sum (bottles_tons) | paper_tons | bottles_tons
sum(paper_tons)
doit retourner la somme de toutes les tonnes de papier pour la même bl_id
comme Jan à Décembre. En utilisant la requête ci-dessous je suis capable de récupérer toutes les données correctement, sauf dans le résultat, il y a plusieurs occurrences de bl_ids(From bl_data table)
.
SELECT bl_main.bl_id,name,bl_area,sums.SummedPaper, sums.SummedBottles,paper_tons,bottles_tons
FROM bl_main
JOIN bl_details ON
bl_main.bl_id= bl_details.bl_id
left outer JOIN bl_data ON
bl_data.bl_id= bl_main.bl_id
left outer JOIN (
SELECT bl_id, SUM(Paper_tons) As SummedPaper, SUM(bottle_tons) As SummedBottles
FROM bl_data
GROUP par bl_id) résume ON sums.bl_id = bl_main.bl_id
Je WANTO récupérer uniquement les valeurs uniques de bl_ids sans répétition et il doit contenir le bl_id qui a le mois maximum et pas tous les mois pour le même bl_id.
Ex:
INCORRECT
**0601** University Hall 75.76 17051 1356 4040 1154 **11**
**0601** University Hall 75.76 17051 1356 9190 101 **12**
**0605** UIC Student 22.86 3331 14799 0 356 **8**
CORRECT
**0601** University Hall 75.76 17051 1356 9190 101 **12**
**0605** UIC Student 22.86 3331 14799 0 356 **8**
Je sais que je peux obtenir la valeur maximale en utilisant
WHERE Month = (SELECT MAX(Month)
mais où exactlt devrais-je ajouter ceci dans la requête et dois-je changer la jointure définition. Toute aide est très appréciée car je suis nouveau à sql. Merci d'avance.
Relisez votre message et obtenez votre droite bl_id et bu_ids. –
Quels SGBDR utilisez-vous? – Quassnoi
Basé sur le fait qu'il écrit des requêtes brutes, je ne pense pas qu'il utilise RDBMS – marr75