繁体   English   中英

SQL 查询 - select 来自 2 个表的多行

[英]SQL Query - select multiple rows from 2 tables

我是 SQL 的新手,最近看到了这个问题,在 [附图] 中有描述1

. 关于如何解决它的任何建议? 提前致谢。

在大多数情况下,最好从头开始解决此类要求。 让我们尝试一下:“拥有超过 3 件商品......以及总价”。

select InvoiceId, sum(price)
  from InvoiceItem
 group by InvoiceId
having count(1) > 3;

此查询为您提供每张超过 3 个项目的发票的总价。 您可能想知道为什么有那个有趣的“have”子句而不是“where”子句。

数据库首先执行查询的“from”和“where”部分以获取数据,然后才可以使用聚合(sum、count 等),因此稍后将指定它们。

上面的查询实际上返回了需求中的所有数据,但我假设给你这个任务的人(那是老师,对吗?)要求你从 Invoices 表中检索与 InvoiceItem 表中的记录相对应的所有数据有3个以上的项目等等。

所以,现在你剩下的就是用上面的查询加入 Invoice 表

select i.id, i.customername, i.issuedate, sum(it.price)
  from InvoiceItem it
  join Invoice i on it.invoiceid = i.id
 group by i.id, i.customername, i.issuedate
having count(1) > 3;

老师可能会问你为什么使用 count(1) 而不是 count(*) 或 count(id) 什么的。 告诉他/她所有这些东西都是平等的,所以你只选择了一个。

现在它应该可以正常工作了。 我根本没有测试它,因为你没有提供数据来测试它,而且已经很晚了,所以我很累。 因此,您可能需要修复我可能犯的一些拼写错误或语法错误 - 但请记住,您仍然必须自己完成这项任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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