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