繁体   English   中英

用4个表编写复杂的SQL查询

[英]Writing complex SQL query with 4 tables

我有4个表,我想通过一个查询从中输出信息,但我不确定该怎么做。

•我想从表1中获取所有记录

•对于表1中的每条记录,我想从表2中的所有记录中的字段1中取出SUM,并取自表1中的匹配ID。

•对于表1中的每条记录,我想从表1中的所有记录中从表1的匹配ID中取出字段1的SUM

•对于表1中的每个记录,我想从表1中获取匹配ID的表4中的单个记录的值

编辑:

这是我认为我的请求图形应为的样子: 在此处输入图片说明

这是我的工作代码:

SELECT DISTINCT 
   i.id, 
   i.dateCreated,
   i.dateBilled,
   i.dateCompleted,
   i.userId, 
   i.type, 
   i.status, 
   i.truck, 
   i.poNumber, 
   i.total,
   i.billtoId, 
   i.shiptoId, 
   i.invoiceNumber, 
   i.loadNumber, 
   SUM(p.amount) as amountpaid,
   c.name as billtoName
FROM `invoices` as i
LEFT JOIN `invoice_payments` as p ON i.id = p.invoice
RIGHT JOIN `companies` as c ON c.id = i.billtoId
GROUP BY i.id, i.invoiceNumber

您可以看到我如何通过左SUM从发票上的所有付款中获取SUM 我正在尝试对i.total进行同样的i.total ,但是一旦我添加另一个LEFT JOIN我的计算就会出现错误,并且结果amountpaid翻了一番

您可以在SELECT语句中使用子查询来编写此查询:

SELECT id, 
(SELECT sum(field1) FROM t2 WHERE t2.idfrom1=t1.id) AS firstSum,
(SELECT sum(field1) FROM t3 WHERE t3.idfrom1=t1.id) AS secondSum,
(SELECT min(field1) FROM t4 WHERE t4.id=t1.f2 LIMIT 1) AS singleRecord
FROM t1

这就是想法,您只需要使其适应您的架构即可。

编辑: 从工程图更新

暂无
暂无

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

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