【发布时间】:2011-01-02 15:06:35
【问题描述】:
我有一系列相关的表格。
Transaction_Type
Transaction_ID(主要)
交易金额
交易类型
交易
Transaction_ID(主要)
时间戳
购买
交易 ID
Item_ID
Purchase_ID(主要)
物品
Item_ID
Client_ID
我需要根据时间戳和 client_id 选择 transaction_type 行
我的查询如下:
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
问题:
如果客户在一笔交易中购买了多件商品 - 一个 transaction_id 将在 Purchase 表中有多行。因此,该联接正在为购买多行的 transaction_id 重复 transaction_amount。
有没有办法将UNIQUE 应用于此查询的购买行?
还有其他方法可以绕过购买的多行吗?
或者我是否需要重新评估我的数据库架构?
如果有任何其他信息有帮助,请告诉我。
【问题讨论】:
-
一个非常相似 - 是的。但那是为了诊断问题——这是更具体的。如果我应该坚持这个问题,我可以毫无问题地结束这个问题。
-
我想你想做一个 PIVOT 但我不确定 mysql 是否支持它