Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-使用联接从3个不同表中选择数据的查询_Mysql_Sql - Fatal编程技术网

MySQL-使用联接从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

我的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 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.*的查询无法返回任何与所需数据类似的内容。