【问题标题】:Is it a join in SQL?它是SQL中的连接吗?
【发布时间】:2013-08-29 09:42:58
【问题描述】:

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

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 

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

【问题讨论】:

  • 对不起,我的错,它在订单表中

标签: mysql sql sql-server select join


【解决方案1】:

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

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

【讨论】:

  • 对此感到抱歉...但它不是我的...我正在尝试在名为 STONE EDGE 的 Amazon 管理器上创建一些脚本,并且架构是他们的...:(
【解决方案2】:

是的,您需要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

由于ordersinventorySuppliers 表记录之间没有直接关系,因此您必须使用第三个表(orderdetails)将它们连接在一起。

【讨论】:

    猜你喜欢
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 2013-09-02
    • 2012-03-25
    相关资源
    最近更新 更多