Ms-Access

如何在 MS 訪問中創建這樣的查詢,以便僅顯示超過 3 個預訂的客戶?

  • April 10, 2019

我有兩個不同的表,“客戶”表,“客戶 ID”作為主要欄位,還有一些欄位,如姓名、姓氏等(全部為文本格式)。

第二個表是“Booking details”,它的主鍵是“Booking ID”,然後是客戶姓名、姓氏等,(同樣,都是文本)

所以,基本上,在預訂詳細資訊表中,每個預訂都有一個唯一的預訂 ID,一個客戶可以進行多個預訂,我想創建一個查詢,只對超過 3 個預訂的客戶進行排序?

在此處輸入圖像描述

SELECT Customers.Customer_ID
FROM Customers
INNER JOIN Bookings 
   ON Customers.Customer_ID = Bookings.Customer_ID
GROUP BY Customers.Customer_ID
HAVING COUNT(Customers.Customer_ID) > 3

視覺上(有些術語是近似的,因為我沒有英文界面的 MS Access):

  • 將兩個表都添加到查詢窗格
  • 通過適當的領域加入他們
  • 客戶表中選擇要輸出的欄位,不要從預訂表中添加欄位
  • 按下功能區上的總計旋鈕
  • 在欄位列表中再添加一個Customers.Customer_ID
  • 將其Grouping 功能Grouping by更改為Count
  • 將此欄位的條件設置為*>3*
  • 如果您不需要其值,請取消選中顯示

解決此問題的一種方法是連接兩個表並按 Customer_ID 對結果進行分組,這樣您就可以計算出現次數並過濾出現次數超過 3 次的那些:

select 
c.Customer_ID as customer
count(c.Customer_ID) as bookings
from Customers c
inner join Boockings b
on c.Customer_ID = b.Customer_ID
group by c.Customer_ID
having bookings > 3;

引用自:https://dba.stackexchange.com/questions/234405