我有两张桌子:
以下是数据:
我想要一个产生这个结果的查询:
我试过这个:
SELECT p.id, p.name, sum(o.amount) AS total
FROM products AS p
INNER JOIN orders AS o ON o.product_id = p.id
GROUP BY p.id
但我明白了:
如何按预期获得结果?
答案 0 :(得分:0)
你必须像这样做左外连接:
SELECT p.id, p.name, IFNULL(sum(o.amount), 0) AS total
FROM products AS p
LEFT OUTER JOIN orders AS o ON o.product_id = p.id
GROUP BY p.id
[OUTER] -Keyword是可选的,可以省略。
看一下这个问题:MySQL: Typecasting NULL to 0
但很抱歉,这真的是如此基本,你可以用各种语言在世界各地谷歌...
答案 1 :(得分:0)
使用Left Join
MySQL LEFT JOIN子句允许您查询来自两个或多个数据库表的数据。 LEFT JOIN子句是SELECT语句的可选部分,它出现在FROM子句之后。
答案 2 :(得分:0)
SELECT p.id,p.name,(SELECT SUM(o.amount) FROM orders o WHERE o.product_id=p.id) total
FROM products p