2015-09-23 21 views
0

自從一段時間以來,我一直停留在此查詢上,不知道如何前進。問題在於連接多個表時:我注意到數字數據與我期望的數字數據不匹配。這是因爲對於包含較少記錄的表中的每條記錄,聯接將從較大的表中獲取所有相應的記錄。加入表格後刪除重複數據

例如,假設您有以下表格。具有較少記錄的表(可用水果)對於每個A,B,C,D和E具有一條記錄。具有更多記錄(即今日銷售量)的表具有A,B,C,D和E各自的多條記錄。

enter image description here

然後假設你使用JOIN兩個表結合以上。

SELECT A.*, B.* 
FROM [Available Fruits] A 
JOIN [Sales Today] B 
ON A.[Fruit ID]=B.[Fruit ID] 

結果如下表所示。請注意,對於每個實例,可用水果表中的行都會被複制,相應的ID將顯示在「今日銷售額」表中。即如果將「庫存」和「水果」字段放入新表中,則此連接表會使蘋果的庫存顯示爲375,而不是預期的75,如下圖所示。

enter image description here

不幸的是我還沒有足夠的積分後的圖像。

編輯:所以我想在SQL中做什麼是以某種方式能夠將「今日銷售」表彙總到「可用的水果」粒度級別,因此它不會得到重複或以某種方式計算分佈按A,B,C,D,E出售庫存,所以我可以加入這兩個表格,而不用重複我在「庫存」字段中解釋的內容。

我真的很感謝你們的幫助。

+0

你試過SELECT DISTINCT? –

+0

聯合應該如何工作......你忘了問你的問題。 「我注意到數字數據與我期望的數字數據不匹配,你認爲我們可以讀懂你的想法以找出你期望的內容嗎? –

回答

0

你實際上沒有發佈你想要的樣子。嘗試像這樣的東西(我不是在一個位置,現在就試試吧,我從來沒有在連接表之前完成組由

SELECT A.[Fruit ID], A.Fruit, sum(B.[Fruits Sold]) 
from [Available Fruits] A 
left outer join [Sales Today] B on A.[Fruit ID] = B.[Fruit ID] 
group by A.[Fruit ID], A.[Fruit]