[英]Help diagnose bizzare MySQL query behavior
我有一個非常具體的查詢正在起作用,我可以在調試它時使用任何幫助。
此查詢涉及4個表。
交易類型
Transaction_ID(主要)
交易金額
交易類型
交易
Transaction_ID(主要)
時間戳記
采購
交易編號
Item_ID
項目
Item_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 = problematicID時,它僅返回兩個。
編輯:::::
仍然重復在變更日期范圍內的踢球者:
當我更改初始daterange時,它僅針對該特定transaction_id返回兩行。
::::
這是我使用join的方式嗎? 這就是我能想到的...
編輯:這是問題
在購買中-兩個單獨的Purchase_ID可以具有相同的transaction_ID(purhcase_ID可以分解特定商品的銷售)。
采購編號中有重復的交易編號行
我們需要查看所有表中的所有數據才能知道問題出在哪里。 但是,由於聯接是問題所在,因為當您認為一個表只有一行時,其中一個表就有兩行。
您的架構有問題。 您的行具有相同的transaction_id,這是主鍵。 我認為他們不能在該數據庫中標記為主要。 對於具有相同ID的兩行,這可能導致意外的多余行從聯接中返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.