【发布时间】:2019-04-20 07:06:06
【问题描述】:
我有六张桌子
- 主表
Orders是一个加密表,其中包含客户的订单。 - 第二个表是
Orders表的哈希表。OrdersHash。 -
剩下的四个表是存储表,都具有相同的结构。
StoreA, StoreB, StoreC, & StoreD.订单表
订单ID |其余行...
订单哈希表
订单ID | orderIdHash |行的其余部分..
四个存储表都共享这种结构。
orderIdHash |客户 ID |行的其余部分..
仅使用customerId 我正在尝试查询四个存储表以查看是否有任何存储表包含customerId。如果在四个商店表中的任何一个上找到customerId,我想使用orderIdHash 让我回到原来的Orders 表并返回找到的任何订单的行。
如果我为 Mike 使用 customerId,我会期望 Orders 表中的第 1 行。
这是我迄今为止尝试过的。
"SELECT
o.dateShipped AS orderShipped,
o.shipped AS shipped,
o.recieved AS recieved
FROM Orders o
JOIN OrdersHash oHash
ON o.orderId = oHash.orderId
JOIN StoreA a
ON ohash.orderIdHash = a.orderIdHash
JOIN StoreB b
ON ohash.orderIdHash = b.orderIdHash
JOIN StoreC c
ON ohash.orderIdHash = c.orderIdHash
JOIN StoreD d
ON ohash.orderIdHash = d.orderIdHash
WHERE
a.customerId = :customerId1
OR b.customerId = :customerId2
OR c.customerId = :customerId3
OR d.customerId = :customerId4";
**customerId 1,2,3,4 都是相同的值。我必须在 PDO 中使用不同的名称进行绑定。
这将返回一个结果,但是当我只需要 Orders 表中的一条记录时,它似乎从 Orders 为商店中具有匹配 orderIdHash 的每一行返回同一行。
提前感谢您的帮助。
【问题讨论】:
-
只是一个想法 - 但如果所有绑定都是相同的值,为什么不直接使用
b.customerId = a.customerId等替换它。 -
不错的主意,当我弄明白问题的关键时,我会看看那个。
-
为什么你有多个存储表,如果存储 ID 将其链接到具有特定详细信息的存储表,通常你会有 1 个表和某种形式。
-
四家供应商四张桌子..这是我被赋予的工作。
-
每个订单是否包含 1 行? ordershash 每个订单是否包含 1 行?一个订单可以由多家商店履行吗?样本数据将有助于澄清,