从两个表中查询

时间:2014-05-06 12:29:29

标签: mysql

我必须组合我在mySQL中创建的两个表中的数据。

我应该弄清楚每一件产品在任何一天到达的数量。

我创建了以下查询:

SELECT SUM(Amount) Shipment.Arrival_date, 
       Shipment.Shipment_ID, 
       `Product shipment`.Product_Code, 
       `product shipment`.Shipment_ID, 
       `product Shipment`.Amount 
FROM `Product shipment`, `shipment` 
WHERE `product Shipment`.Shipment_ID=`Product Shipment`.Product_code 
    AND Arrival_date = '2014-01-01

我的两个表分别称为装运和产品装运。

此外,我的货件表中有一个描述到货日的列,以及cargo_ID,它是我的产品装运表中货件_ID的主键。

在我的产品发货表中,shipment_ID由product_code和产品金额描述。

我的查询返回错误#1064。有关如何解决的任何建议吗?

3 个答案:

答案 0 :(得分:0)

试试这个:

SELECT SUM(ps.Amount),
    s.Arrival_date, 
    s.Shipment_ID, 
    ps.Product_Code, 
    ps.Shipment_ID, 
    ps.Amount 
FROM 
    `Product shipment` AS ps,
    `shipment` AS s
WHERE 
    ps.Shipment_ID=ps.Product_code 
    AND 
        s.Arrival_date = '2014-01-01'

请注意,您将ps表连接到ps表,它可能是一个想要的行为,但你永远不会把ps加入到s

答案 1 :(得分:0)

至少你缺少SUM(Amount)和Shipment.Arrival_date之间的逗号,或者缺少' as'从同一个地方。另外,WHERE子句中的Arrival_date缺少' - 它是在代码中还是你忘记将它粘贴在这里?

此外,根据运行MySQL的MySQL设置和操作系统,table.column name capitalization中的差异可能会导致问题。您有'产品货件

答案 2 :(得分:0)

您在查询中的聚合函数后错过了逗号。此外,您在选择字段中输入了 sum 的列,这几乎总是错误的。

这应该有效:

select
    sum(ps.Amount),
    // You forgot the comma after this aggregate function
    sh.Arrival_date, 
    sh.Shipment_ID, 
    ps.Product_Code, 
    ps.Shipment_ID
from 
    `Product shipment` ps
        join `shipment` sh
            on ps.Shipment_ID=.Product_code 
where
    Arrival_date = '2014-01-01'
group by
    sh.Arrival_date, 
    sh.Shipment_ID, 
    ps.Product_Code, 
    ps.Shipment_ID

另外,你真的应该read this lengthy Q&A that I put together来帮助完全像这样的情况,你的查询有一个你不明白的问题,一些人来帮助 - 虽然这里的答案可能会解决问题(我们希望)你仍然没有真的得到你做错了。