私は3つのテーブル3結合やwhere句一緒
bl_main (bl_id UNIQUE, bl_area)
bl_details (bl_id UNIQUE, name)
bl_data(bl_id, month, paper_tons, bottles_tons)
bl_id
を持っているが、最後のテーブル内で一意ではありません。同じbl_id
の複数の行があります。私は
bl_id | name | bl_area | sum(paper_tons) | sum (bottles_tons) | paper_tons | bottles_tons
sum(paper_tons)
次の方法でデータを取得しようとしています
12月に月のように同じbl_id
のためのすべての紙トンの合計を返す必要があります。
以下のクエリを使用すると、結果を除いてすべてのデータを正しく取得できますが、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
sums.bl_id = bl_main.bl_id
ON bl_id)を合計して、グループに私は繰り返しなしでbl_idsの唯一のユニークな値を取得wanto、それがすべての最大の月があるbl_idが含まれているとはなりません同じ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**
私は
WHERE Month = (SELECT MAX(Month)
を使用して、最大値を得ることができます知っているが、exactltは、私は、クエリでこれを追加する必要がありますし、私は参加定義を変更する必要があります場所。 私はSQLに慣れているので、どんな助けもありがとうございます。前もって感謝します。
投稿を校正し、bl_idとbu_idsをまっすぐにしてください。 –
どのRDBMSを使用していますか? – Quassnoi
生のクエリを書いているという事実に基づいて、私は彼がRDBMSを使用しているとは思わないでしょう – marr75