0
加入我有兩個表CLIENSTS
和PRICES
我wanto加入他們的行列,以一年每一個來計算每個項目類型總價金額。
我的查詢必須對每個項目的值進行求和,按類型對它們進行分組,並且將它們與客戶表中對應項目的類型量進行比較;如果所選年份沒有項目,也會顯示空值。MySQL的多與空的結果行
這裏我表:
CLIENTS
| name | item_A | item_B | item_C |
| X | 10 | 10 | 10 |
| Y | 5 | 15 | 0 |
| Z | 0 | 0 | 20 |
PRICES
| item | item_type | year | value |
| a1 | A | 2010 | 1 |
| a2 | A | 2010 | 2 |
| b1 | B | 2010 | 2 |
| b2 | B | 2010 | 3 |
| c1 | C | 2010 | 3 |
| a1 | A | 2011 | 4 |
| b1 | B | 2011 | 5 |
我正在尋找能夠執行每年相繼式結果的查詢選擇:
2010
| name | price_A | price_B | price_C |
| X | 30 | 60 | 30 |
| Y | 15 | 90 | 0 |
| Z | 0 | 0 | 60 |
2011
| name | price_A | price_B | price_C |
| X | 40 | 50 | none/null/zero |
| Y | 20 | 75 | none/null/zero |
| Z | 0 | 0 | none/null/zero |
這是我的嘗試,但不幸的是它正確執行第一年(2010年),第二年(2011年)不返回任何一行。
我想這是由於第二年沒有total_C
第三次加入。
如果結果存在或者將值設置爲「none/null/zero」,請問mySQL加入tabe「」的正確方法是什麼?
SELECT
`name`,
`item_A` * `total_A`.`total_value` AS `price_A`,
`item_B` * `total_B`.`total_value` AS `price_B`,
`item_C` * `total_C`.`total_value` AS `price_C`
FROM `CLIENTS`
JOIN
(
SELECT
`item_type`,
SUM(`value`) AS `total_value`
FROM `PRICES`
WHERE `item_type`='A' AND `year` LIKE '2010'
GROUP BY `item_type`
) AS `total_A`
JOIN
(
SELECT
`item_type`,
SUM(`value`) AS `total_value`
FROM `PRICES`
WHERE `item_type`='B' AND `year` LIKE '2010'
GROUP BY `item_type`
) AS `total_B`
JOIN
(
SELECT
`item_type`,
SUM(`value`) AS `total_value`
FROM `PRICES`
WHERE `item_type`='C' AND `year` LIKE '2010'
GROUP BY `item_type`
) AS `total_C`
是的!謝謝。這是一種不同的方法,你的聯合子查詢生成一個更大的表,其主對角線上的值不爲空,但所有的查詢都比我的更快,更小......廣告的作品! – Mave751 2013-04-07 12:26:07