获取有关会员人数和约会日期的可用组

时间:2019-03-02 13:31:45

标签: mysql

我正在尝试获取具有特定成员数并且在特定日期可以使用(无需预约)的所有组(乐队)。

我有3张桌子:

TBL_BANDMEMBER
ID | user_id | band_id | record_date
--------------------------------------------
1  | 10      | 1      | 2019-02-05 12:14:35
2  | 20      | 1      | 2019-02-05 12:14:35
3  | 30      | 2      | 2019-02-05 12:14:35
4  | 40      | 3      | 2019-02-05 12:14:35
5  | 50      | 4      | 2019-02-05 12:14:35

TBL_APPOINTMENTS
ID | band_id | appointment_date
--------------------------------------------
1  | 1       | 2019-02-05 20:15:00
2  | 3       | 2019-03-02 19:00:00

TBL_BANDINFO
ID | name 
---------
1  | ExampleBandA      
2  | ExampleBandB
3  | ExampleBandC
4  | ExampleBandD

所以我的问题是,例如,获得只有一个成员(1)并且在MySQL的2019-03-02没有约会的所有Band的最佳方法是什么? 它也应该适用于其他计数和日期,并从TBL_BANDINFO表中返回频段的名称和ID。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用以下解决方案:

SELECT bi.ID, bi.name
FROM TBL_BANDINFO bi INNER JOIN TBL_BANDMEMBER bm ON bi.ID = bm.band_id 
WHERE NOT EXISTS (
    SELECT * 
    FROM TBL_APPOINTMENTS a 
    WHERE a.band_id = bi.ID AND appointment_date = '2019-03-02'
)
GROUP BY bi.ID, bi.name
HAVING COUNT(bi.ID) = 1
  

demo on dbfiddle.uk