MySQL-使用联接从3个不同表中选择数据的查询
我的MySQL DB合同中有3个表,合同详细信息,合同接收。表结构如下所示:MySQL-使用联接从3个不同表中选择数据的查询,mysql,sql,Mysql,Sql,我的MySQL DB合同中有3个表,合同详细信息,合同接收。表结构如下所示: Contract c_id | c_date | c_vendor | c_ref ---------+------------+------------+-------- 1 | 2/27/2020 | MS Traders | n/a 2 | 2/28/2020 | MS Traders | n/a 3 | 2/29/2020 | J Pre
Contract
c_id | c_date | c_vendor | c_ref
---------+------------+------------+--------
1 | 2/27/2020 | MS Traders | n/a
2 | 2/28/2020 | MS Traders | n/a
3 | 2/29/2020 | J Premiers | n/a
Contract_Details
cc_id | cd_contract_id | cd_item | cd_qty | cd_rate | cd_total
---------+----------------+---------------+--------+---------+---------
1 | 1 | HP Laptop | 3 | 5300 | 15900
2 | 1 | Dell Laptop | 5 | 5700 | 28500
3 | 2 | HP Printer | 8 | 2500 | 20000
4 | 3 | Epson Printer | 5 | 3500 | 17500
5 | 3 | IB Scanner | 5 | 4200 | 21000
Contract_Receiving
cr_id | cr_cd_id | cr_date | cr_qty
---------+-----------+-------------+---------
1 | 1 | 3/1/2020 | 3
2 | 2 | 3/1/2020 | 5
3 | 3 | 3/3/2020 | 2
4 | 3 | 3/8/2020 | 2
我想从三个表中得到以下结果:
c_id | c_vendor | items_received | items_total
-------+------------+----------------+-------------
1 | MS Traders | 8 | 8
2 | MS Traders | 4 | 8
3 | J Premiers | 0 | 10
我正在使用以下查询,但没有得到所需的结果。请指导我编写查询以获得所需的结果。谢谢
SELECT contract.*, IFNULL(SUM(cr_qty),0) AS 'Received', SUM(contract_detail.cd_qty) AS 'Total'
FROM `contract_receiving`
LEFT JOIN contract_detail ON (contract_receiving.cr_cd_id = contract_detail.cd_id)
LEFT JOIN contract ON (contract.c_id = contract_detail.cd_contract_id)
GROUP BY contract.c_id
在加入之前,您可以通过计算收到的项目和项目总数来获得预期的结果 选择 c、 c_id, c、 c_供应商, 合并接收到0个项目,接收到0个项目, 合并CD.items\u总计,0个items\u总计 来自合同c 左连接 选择cd\ U合同\ id、累计数量项目\总计 从合同细节 按cd分组\u合同\u id cd 在c.c_id=cd.cd_合同上 左连接 选择cd\ U合同\ id、SUMcr\ U数量项目\接收 从合同接收 内部连接合同详细信息 ON cd_id=cr_cd_id 按cd分组\u合同\u id cr 在c.c_id=cr.cd_合同上
请不要拍照。。我们不能复制并粘贴这些内容来以表格形式重新创建示例数据。请粘贴文本,最好是带有链接,这样我们就不必做大量工作来解决您的问题。此外,使用contract.*的查询无法返回任何与所需数据类似的内容。