我在執行任務時遇到了問題。我想顯示推薦超過 2 個其他成員的成員的 member_ID、name 和 num_of_referee。代碼已編譯,但沒有回傳任何內容。我不確定哪個部分出了問題。
SELECT m.member_ID, m.name, COUNT(*)
FROM member m
HAVING (m.member_ID, COUNT(*)) IN (
SELECT m.referrer_ID, COUNT(*)
FROM member m
WHERE m.referrer_ID IS NOT NULL
GROUP BY m.referrer_ID
HAVING COUNT(*) > 2)
ORDER BY m.member_ID DESC
資料庫的屬性
? 分支(branch_ID、name、address_street、address_district) 外鍵:無
? 講師(instructor_ID、name、year_of_experience) 外鍵:無
? 類(class_ID、名稱、描述、日期、容量、branch_ID、instructor_ID) 外鍵:{branch_ID} 參考 Branch.branch_ID;{instructor_ID} 參考 Instructor.instructor_ID
? Member (member_ID, name, date_of_birth, referrer_ID) {referrer_ID} 參考 Member.member_ID 注意:一個成員可以不被其他成員推薦,也可以最多被一個其他成員推薦。會員可以將許多其他會員推薦給健身公司。
? 注冊 (member_ID, class_ID) 外鍵:{member_ID} 參考 Member.member_ID;{class_ID} 參考 Class.class_ID
uj5u.com熱心網友回復:
也許是另一種計算推薦然后加入以獲得會員的方式,例如
create table t
(member_ID int, name varchar(10),referrer_ID int);
insert into t values
(1,'one',null),
(2,'two',3),(3,'three', null),(4,'four',3);
with cte as
( SELECT m1.referrer_ID ,count(*) as cnt
FROM t m1
WHERE m1.referrer_ID IS NOT NULL
GROUP BY m1.referrer_ID
HAVING COUNT(*) >= 2)
select t.member_id, t.name, cnt
from cte
join t on t.member_id = cte.referrer_id;
----------- ------- -----
| member_id | name | cnt |
----------- ------- -----
| 3 | three | 2 |
----------- ------- -----
1 row in set (0.001 sec)
uj5u.com熱心網友回復:
出于某種原因, with 子句不適用于我的 mySQL 版本。我以某種方式嘗試了這個并且有效。我把它貼在這里供參考。
SELECT member.member_ID, member.name, cnt
FROM member JOIN (
SELECT referrer_ID, count(*) as cnt
FROM member
WHERE referrer_ID IS NOT NULL
GROUP BY referrer_ID
HAVING cnt > 2) as temp
WHERE member.member_ID = temp.referrer_ID
ORDER BY member.member_ID DESC
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/441435.html
下一篇:Kotlin房間資料庫布林值
