-1

我有三张桌子。
第一个表是:

Orders
======
Ordernumber  PK
CartID 
Field1
....

第二张表是:

OrderDetails
============
Ordernumber PK
SKU         FK (with InventorySuppliers localSKU field)
Field-a
.....

第三张表是:

InventorySuppliers
=================
SupplierID   PK
LocalSKU     FK (Orderdetails table with 'SKU')
Field-x
....

我想做的是这样的:

SELECT * 
FROM   ORDERS 
WHERE  ORDERS.CARTID = 11 
       AND INVENTORYSUPPLIER.SUPPLIERID = 155 

我的问题是此查询中使用的两个表之间没有直接关系。
我该如何编写这个查询?

4

2 回答 2

4

是的,你需要一个JOIN

SELECT o.*
FROM orders o
JOIN orderdetails od ON o.ordernumber = od.ordernumber
JOIN inventorySuppliers is ON is.localSKU = od.SKU
WHERE o.cartID = 11
AND is.supplierID = 155

orders因为和表记录之间没有直接关系inventorySuppliers,所以必须使用第三个表 ( orderdetails) 将它们连接在一起。

于 2013-08-26T19:55:36.737 回答
1

您的架构设计存在致命缺陷,因为两个不同的供应商可能对不同的产品使用相同的 sku。您的架构无法知道 sku 引用的库存供应商中的哪条记录。

在您可以使用此 sql 执行任何其他操作之前,您需要更改架构以在订单详细信息记录中包含供应商 ID。

于 2013-08-26T19:58:09.727 回答