這是我的SQL表結構:SQL查詢合併兩個查詢到一個空行
表1:細節
|--id--|--id_user--|--price--|
| 1 | 1 | 10 |
| 2 | 2 | 15 |
| 3 | 1 | 25 |
| 4 | 3 | 30 |
| 5 | 3 | 7 |
------------------------------
表2:用戶
|--id--|--id_country--|
| 1 | 1 |
| 2 | 2 |
| 3 | 0 |
-----------------------
表3:國家
|--id--|--country--|
| 1 | France |
| 2 | Italy |
--------------------
我需要的是t Ø按國家得到價格的總和:
SELECT c.country, SUM(d.price) AS price
FROM details d
INNER JOIN users u ON u.id = d.id_user
INNER JOIN country c ON c.id = u.id_country
GROUP BY c.country
ORDER BY c.country
我得到這個:
|--country--|--price--|
| France | 35 |
| Italy | 15 |
-----------------------
但我需要得到這個:
|--country--|--price--|
| France | 35 |
| Italy | 15 |
| Undefined | 37 |
-----------------------
其中undefined
是,如果id_country=0
。 (我不能添加到國家表id=0 or id=undefined
,它會弄亂其他東西)。現在,我通過兩個單獨的查詢實現這一目標,第二個是:
SELECT SUM(d.price) as price
FROM details d
INNER JOIN users u ON u.id = d.id_user AND u.id_country=0
GROUP BY u.id_country
我在想,如果...... 是有可能做到這一點在一個查詢?
切換到左加入國家。 – jarlh
RIGHT JOIN'INNER JOIN country c' –
很奇怪的是,您可以在不存在的用戶表中使用id_country。這表明你不正確地使用你的數據庫。如果你想允許「未定義的國家」,你應該有一個外鍵約束,並使列可以爲空。 –