我的数据库中有三个表:
(1)orders
(2)mastersku
(3)inventory
基本逻辑orders
进来,引用mastersku
表,并在inventory
表中的适当skus中插入新的数量级别。
订单表:
mastersku表:
库存表:
正如您在mastersku
表格中看到的,一些sku有多个skus。我的逻辑是,如果SKU有多个SKU,MultSKU
的值为1
(并且AltSKU
为NULL,SKU_1,SKU_2等中的skus不同)
这是我当前的查询:
SELECT
Inventory.id,
Inventory.SKU AS inventory_sku,
Inventory.Quantity AS inventory_quantity,
MasterSKU.SKU_1,
MasterSKU.SKU_2,
MasterSKU.SKU_3,
MasterSKU.SKU_4,
MasterSKU.SKU_5,
MasterSKU.MultSKU,
MasterSKU.QtySKU,
MasterSKU.AltSKU,
MasterSKU.SKU,
Orders.Quantity AS sold_quantity,
Orders.SKU AS sold_sku
FROM Orders
LEFT OUTER JOIN mastersku
ON Orders.SKU = MasterSKU.SKU
LEFT OUTER JOIN inventory
ON MasterSKU.AltSKU = Inventory.SKU
OR MasterSKU.SKU_1 = Inventory.SKU
GROUP BY Orders.SKU
这导致
同样,如果我将OR MasterSKU.SKU_1 = Inventory.SKU
更改为OR MasterSKU.SKU_2 = Inventory.SKU
我得到了预期的结果。
我需要做的是,并且正在努力争取正确的时间,将两个查询结合起来。像
这样的东西LEFT OUTER JOIN inventory
ON MasterSKU.AltSKU = Inventory.SKU
OR MasterSKU.SKU_1 = Inventory.SKU
AND OR MasterSKU.SKU_2 = Inventory.SKU
AND OR MasterSKU.SKU_3 = Inventory.SKU
(但显然这不是正确的语法..)
获得所需的结果......(这种便宜的油漆复制+粘贴)
我在PHP工作,但这是我第一次使用自己设计的MySQL数据库做一个重大项目。有什么帮助吗?如果它有帮助,这里有一点SQLFiddle:http://sqlfiddle.com/#!9/f4fd2/4
答案 0 :(得分:1)
您可以列出IN
列表中的列:
LEFT OUTER JOIN inventory
ON Inventory.SKU IN (MasterSKU.AltSKU, MasterSKU.SKU_1, MasterSKU.SKU_2, MasterSKU.SKU_3, MasterSKU.SKU_4, MasterSKU.SKU_5)