我正在研究小型學校資料庫,我需要一些幫助來選擇僅在第 1 周和第 2 周的不同日期預訂的學生。
我的表結構如下:
ChildId Day Room Week
======= === ==== ====
1 1 20 1
1 2 20 1
2 1 20 2
3 1 20 1
3 2 20 1
3 1 20 2
===== === === ===
我想得到所有滿足以下條件的孩子:
- 僅在第二周預訂(這是 ChildId 2,我可以從以下查詢中獲得)
SELECT DISTINCT b.childid FROM booking b where b.childid NOT IN (SELECT childid FROM bookingtemplate WHERE weekno = 1)
我也需要
- 第二周所有與第一周不同的孩子。那將是 ChildID 3,因為他在第 1 周的周一和周二以及第 2 周的周一被預訂。
我無法得到這兩個星期的日子不同的孩子:
謝謝
uj5u.com熱心網友回復:
您可以自行加入表格并過濾天數不同的情況。
SELECT DISTINCT
b1.ChildId
FROM
booking b1
INNER JOIN
booking b2
ON
b1.ChildId = v2.ChildId
AND b1.Week = 1 AND b2.Week = 2
AND b1.Day <> b2.Day
uj5u.com熱心網友回復:
您可以使用聚合和HAVING子句中的條件來做到這一點:
SELECT ChildId
FROM booking
WHERE Week IN (1, 2)
GROUP BY ChildId
HAVING MIN(Week) = 2
OR GROUP_CONCAT(DISTINCT CASE WHEN Week = 1 THEN Day END ORDER BY Day) <>
GROUP_CONCAT(DISTINCT CASE WHEN Week = 2 THEN Day END ORDER BY Day);
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/330808.html
上一篇:從總交易量計算每日交易量
