簡體   English   中英

MYSQLQuery-如何創建查詢,我們必須列出由同一位歌手購買了特定數量專輯的客戶

[英]MYSQLQuery- How to create a query where we have to list out customers who have bought a specific number of album by the same singer

我們有以下表格:

Customer:
customer_id (pk)
customer_name
customer_dob
adress
gender

Album:
Album_id (PK)
album_name
singer_id (FK)

Order_Details:
order_id (Pk)
quantity purchased
customer_id (fk)

Order_Basket:
Order_id (fk)
album_id (fk)

我想創建一個SQL查詢語句,在這里我要列出由同一位歌手購買了4張或更多專輯的客戶。 我對此很陌生,我想從這里尋求更多專業人士的意見。

嘗試這個:

select customer.customer_id, album.singer_id , count(*)
from customer ,order_details, order_basket, album
where customer.customer_id = order_details.customer_id
and order_details.order_id = order_basket.order_id 
and order_basket.album_id = album.Album_id 
group by customer.customer_id, album.singer_id 
having count(*) > 3
WITH PurchaseSummary AS (
  SELECT d.customer_id, a.singer_id, count(a.album_id) AS album_count
  FROM Order_Details d
  LEFT JOIN Order_Basket b ON on b.Order_id = d.Order_id
  LEFT JOIN Album a ON a.Album_id = b.album_id
  GROUP BY d.customer_id, a.singer_id)
SELECT ps.customer_id, ps.singer_id, ps.album_count
FROM PurchaseSummary ps
LEFT JOIN Customer c ON c.customer_id = ps.customer_id
WHERE ps.album_count >= 4
ORDER BY d.customer_id

使用子查詢查看所有訂單。 由於一個訂單可能有多個相冊,因此請在order_basket表上添加標簽。 現在,您已收到所有帶有專輯的訂單。 在“專輯”表中添加內容,您將擁有每個訂單的藝術家名稱。 因為您也有客戶ID,所以可以將客戶ID和歌手ID與專輯數量進行分組。 結果將如下所示:

Customer|Artist|Num Albums
1        A      1
1        B      4
2        A      1
2        B      6
2        C      5

然后,您從該表中選擇您的客戶ID和藝術家ID,條件是他們必須從該藝術家那里購買> = 4張專輯。 最后,加入“客戶”表以獲取有關該客戶的更多詳細信息。 如果您也有一個Artist表,則可以在Artist ID上加入該表以獲取名稱等信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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