数据库中有3个表:

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


现在,如果要由供应商1(supplierId = 1)提供,我想获取所有产品(由所有供应商提供)及其数量。如何在单个sql查询中做到这一点?

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

最佳答案

使用左外部联接将允许您列出所有产品,但仅获得供应商提供的产品数量。您只需要在联接条件中使用vendorId约束。

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

关于mysql - SQL连接条件复杂,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24236529/

10-16 22:58