【发布时间】:2010-01-07 18:18:35
【问题描述】:
我有一个非常具体的查询正在执行,我可以使用任何帮助来调试它。
此查询涉及 4 个表。
Transaction_Type
Transaction_ID(主要)
交易金额
交易类型
交易
Transaction_ID(主要)
时间戳
购买
交易 ID
Item_ID
物品
Item_ID
Client_ID
假设有一笔交易,其中有人支付 20 美元现金和 0 美元信用卡,它会在表中插入两行。
//row 1
Transaction_ID: 1
Transaction_amount: 20.00
Transaction_type: cash
//row 2
Transaction_ID: 1
Transaction_amount: 0.00
Transaction_type: credit
这里是具体查询:
SELECT
tt.Transaction_Amount, tt.Transaction_ID
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 >= "2010-01-06 00:00:00" AND t.TimeStamp <= "2010-01-06 23:59:59"
AND
tt.Transaction_Format IN ('cash', 'credit')
AND
i.Client_ID = 3
当我执行这个查询时,它会为一个特定的事务返回 4 行。 (应该是2)
当我删除所有 where 子句并插入 WHERE tt.Transaction_ID = questionsID 时,它只返回两个。
编辑:::::
在更改日期范围时仍然重复
踢球者:
当我更改初始日期范围时,它只返回该特定 transaction_id 的两行。
::::
是我使用join的方式吗?我能想到的就这些了……
编辑:这就是问题
in purchase - 两个单独的 purchase_ID 可以具有相同的 transaction_ID(purhcase_ID 分解特定商品的销售)。
purchase_ID 中有重复的 Transaction_ID 行
【问题讨论】:
-
您需要发布更多信息。首先,如果您发布从查询中获得的 4 行结果(您认为不正确的结果)会有所帮助。
-
这是一个典型的“选择没有损坏”(lingpipe-blog.com/2007/06/27/…) 问题:)
-
哈哈。有趣的阅读。如果我的问题是我指责 SELECT,我深表歉意。 99.9999999% 的时间是程序员。
标签: mysql