簡體   English   中英

幫助診斷奇怪的MySQL查詢行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM