繁体   English   中英

从满足条件的列连接的多个表中选择

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM