2014-08-27 132 views
0

我在用外鍵編寫Access中的SQL查詢時遇到問題。有兩個表格,'顧客'(ID,姓名,姓氏)和'訂單'(ID,客戶,日期,卷)。 ID字段是主要的,並且Orders.Customer是鏈接到Customers.ID的外鍵,所以客戶可以有很多訂單或沒有訂單。帶循環的SQL查詢

我的目標是根據許多標準對客戶進行搜索,其中之一是如果客戶至少有一個訂單的數量高於某一數量。我嘗試加入SELECT DISTINCT,但它仍然給我重複的結果,另外如果查詢沒有使用上述條件,我必須爲每個客戶創建一個空訂單,而無需訂單。

有沒有人有這個想法?也許有關於外鍵或2個單獨查詢的特殊說明?

+0

你想對你的結果是有關客戶或訂單? – Logar 2014-08-27 10:25:41

+0

關於客戶,我剛剛編輯了這個問題,謝謝 – BlackDog 2014-08-27 10:30:02

回答

1

根據您所提供的信息,我只能給你暗示什麼,我認爲你做的/理解錯了:

  • SELECT DISTINCT不會選擇一個獨特的記錄,而不是唯一,所以如果你的語句選擇了所有的字段(*),那麼distinct就不會對你有太大的幫助。
  • 我的猜測是,你必須爲每個客戶建立一個空的順序,因爲你使用INNER JOIN,嘗試LEFT OUTER JOIN代替

例如:

SELECT DISTINCT Customers.* 
FROM Customers 
LEFT OUTER JOIN Orders 
    ON (Orders.Customer = Customers.id) 
WHERE Volume > put_your_value 
+0

是的,我首先使用了內部連接。我認爲截然不同,因爲連接表中的記錄具有不同的順序,但我仍然希望從「客戶」表獲得不同的記錄。這些僅僅是示例表格,我正在工作的表格大約有50列,我不知道有關'

。*'的事情:) – BlackDog2014-08-27 10:42:14

+0

嘗試使用客戶。*正如我在回答中顯示的那樣 – Logar 2014-08-27 10:43:07

+0

完成它,它似乎做的伎倆謝謝你! – BlackDog 2014-08-27 10:47:58