具有复杂条件的SQL连接

时间:2014-06-16 04:06:17

标签: mysql sql join

数据库中的3个表:

Supplier(id, name, address)
Product(id, name, detail)
Product_Supplier(id, productId, supplierId, quantity)

现在我想获得供应商1(supplierId = 1)提供的所有产品(由所有供应商提供)及其数量。我怎么能在一个SQL查询中做到这一点?

更新:如果使用多个查询,我可以这样做:首先,我从Product表中获取产品信息,然后使用Product_SupplierproductId查询supplierId表。一个查询中的所有查询都更短,但效率更高吗?

1 个答案:

答案 0 :(得分:0)

使用LEFT OUTER JOIN将允许您列出所有产品,但仅获取供应商提供的产品数量。您只需要在连接条件中使用supplierId约束。

SELECT Product.*,
       Product_Supplier.quantity
FROM Product
LEFT OUTER JOIN Product_Supplier ON Product.id = Product_Supplier.productId
                                       AND Product_Supplier.supplierId = 1