У меня шесть таблиц
- Основная таблица
Orders
- это зашифрованная таблица, содержащая заказы, сделанные клиентами.
- Вторая таблица является хеш-таблицей для таблицы
Orders
. OrdersHash
.
Остальные четыре таблицы являются таблицами хранилищ, которые имеют одинаковую структуру. StoreA, StoreB, StoreC, & StoreD
.
Таблица заказов
код заказа | остаток строки ...
OrdersHash Table
код заказа | orderIdHash | остаток строки ..
Все четыре таблицы хранилищ имеют общую структуру.
orderIdHash | идентификатор клиента | остаток строки ..
Использование только customerId
Я пытаюсь выполнить запрос к четырем таблицам хранилища, чтобы узнать, содержит ли какая-либо из таблиц хранилища customerId
. Если customerId
найден в любой из четырех таблиц магазина, я хочу использовать orderIdHash
, чтобы вернуть меня к исходной таблице Orders
и вернуть строку для всех найденных заказов.

Если я использую идентификатор customerId для Майка, я ожидаю строку 1 из таблицы Orders.
Это то, что я пробовал до сих пор.
"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
для каждой строки в магазине с совпадающим orderIdHash
, когда мне просто нужна одна запись из таблицы Orders
.
Заранее благодарю за помощь.