结果上有多个内部联接

时间:2013-08-20 11:25:42

标签: mysql sum inner-join

我有4张桌子: -system_users -quotes -quote_items -new_products

,其中

system_users.id = quotes.created_by
quotes.id = quote_items.quote_id
new_products.id = quote_items.new_product_id

我正在尝试查找特定商店的总报价(价格)(system_users.store_id) 到目前为止,我有这个不起作用:

SELECT ROUND(SUM( s.price),2)
    FROM quotes
    INNER JOIN system_users
    ON quotes.created_by = system_users.id
    INNER JOIN quote_items p 
    ON p.id = quote_id  Where system_users.store_id = 14
    INNER JOIN new_products s 
    ON s.id = new_product_id
    Where system_users.store_id = 1

查询肯定在第二次INNER JOIN失败,我不明白为什么。 第一个连接应该获取特定商店中所有用户的所有引号。 第二个连接应该使用上面结果中的quote_ids获取所有quote_items。 第三次加入应从新结果中获取产品并总结价格。

1 个答案:

答案 0 :(得分:1)

您不能在查询中使用WHERE子句两次

SELECT ROUND(SUM( s.price),2)
    FROM quotes
    INNER JOIN system_users
    ON quotes.created_by = system_users.id
    INNER JOIN quote_items p 
    ON p.id = quote_id  AND system_users.store_id = 14
    INNER JOIN new_products s 
    ON s.id = new_product_id
    Where system_users.store_id = 1

您可以在AND子句中使用ON来加入多个条件