[英]Select from multiple tables joined by column where condition is met
有两张桌子,
表格1:
name | surname | firstname
cookie | Smith | John
cake | Miller | Ben
表2:
name | day | points1 | points2
cookie | 1 | 5 | 5
cookie | 1 | 4 | 6
cake | 1 | 7 | 3
cake | 1 | 7 | 3
cookie | 2 | 4 | 4
cookie | 2 | 4 | 4
cake | 2 | 1 | 2
cake | 2 | 3 | 4
我们需要天和 SUM(points1 + points2) AS total GROUP BY day, name 以及来自 table1 的姓氏和名字,其中 table1 和 table2 中的名称匹配,如果总数大于 15。另外结果应该是 ORDER按总DESC,姓ASC。
结果应该产生:
surname | firstname | day | total
Miller | Ben | 1 | 20
Smith | John | 1 | 20
Smith | John | 2 | 16
本米勒(蛋糕)没有出现,因为他第 2 天的总数只有 10。
请注意,table2 中的每个名称在 table1 中都有一个条目。
好吧,如果您希望“姓氏”和“名字”出现在您的结果中,您也必须按这些字段进行分组(GROUP BY 表达式中的所有 SELECT 字段必须是聚合(SUM、AVG、...)或出现在 GROUP BY 子句中)。
通过使用 HAVING,您可以限制 GROUP BY 的结果。
我认为这段代码会起作用:
SELECT surname, firstname, day, (SUM(points1) + SUM(points2)) AS total
FROM table1, table2
WHERE table1.name = table2.name
GROUP BY surname, firstname, day
HAVING (SUM(points1) + SUM(points2) > 15
ORDER BY total DESC, surname ASC;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.