我有六张桌子
主表Orders
是一个加密表,其中包含客户已下的订单。
第二个表是该表的哈希Orders
表。OrdersHash
。
其余四个表是都具有相同结构的存储表。StoreA, StoreB, StoreC, & StoreD
。
订单表
orderId | 该行的其余部分...
订单哈希表
orderId | orderIdHash | 其余的行..
四个存储表都共享此结构。
orderIdHash | customerId | 其余的行..
customerId
我仅使用I来查询四个存储表,以查看是否有任何存储表包含customerId
。如果在customerId
四个商店表中的任何一个上找到,我想使用orderIdHash
来将我带回到原始Orders
表并返回找到的任何订单的行。
如果我使用Mike的customerId,则我希望订单表中的第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存储中的每一行返回了具有匹配项的同一行。orderIdHashOrders
一只萌萌小番薯