У меня есть ряд связанных таблиц.
Transaction_Type
Transaction_ID (основной)
TRANSACTION_AMOUNT
Transaction_Type
Сделка
Transaction_ID (основной)
Отметка
Покупка
TRANSACTION_ID
iTEM_ID
Идентификатор_покупки (основной)
Пункт
ITEM_ID
CLIENT_ID
Мне нужно выбрать строки транзакции на основе метки времени и client_id
Мой запрос выглядит следующим образом:
SELECT
SUM(tt.Transaction_Amount)
FROM
ItemTracker_dbo.Transaction_Type tt
JOIN
ItemTracker_dbo.Transaction t
ON
tt.Transaction_ID = t.Transaction_ID
JOIN
ItemTracker_dbo.Purchase p
ON
p.Transaction_ID = tt.Transaction_ID
JOIN
ItemTracker_dbo.Item i
ON
i.Item_ID = p.Item_ID
WHERE
t.TimeStamp >= $start AND t.TimeStamp <= $end
AND
tt.Transaction_Format IN ('cash', 'credit')
AND
i.Client_ID = $client_ID
Выпуск:
Если покупатель покупает более одной позиции в транзакции - для идентификатора транзакции в таблице «Покупка» будет указано несколько строк. Таким образом, соединение повторяет транзакцию транзакции для идентификатора транзакции, у которого в покупке несколько строк.
Есть ли способ применить UNIQUE
к строкам покупки для этого запроса?
Есть ли другой способ обойти несколько рядов при покупке?
Или мне нужно пересмотреть архитектуру моей базы данных?
Если вам понадобится дополнительная информация, пожалуйста, дайте мне знать.