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