有人能帮我回答我需要的问题吗。我已经看了好几个小时了,但我不明白。
所以事情是这样的。。。。
我有三张table
表1事件
-----------------------------------------
| ID | name | date | seats | ... |
-----------------------------------------
| 1 | name1 | 01/01 | 50 | ... |
| 2 | name2 | 02/02 | 60 | ... |
| 3 | name3 | 03/03 | 55 | ... |
| 4 | name4 | 04/04 | 40 | ... |
| 5 | name5 | 05/05 | 100 | ... |
| 6 | name6 | 06/06 | 20 | ... |
-----------------------------------------
表2人员
-----------------
| ID | person|
-----------------
| 1 | name1 |
| 2 | name2 |
| 3 | name3 |
| 4 | name4 |
| 5 | name5 |
| 6 | name6 |
-----------------
表3预订
---------------------------------
| ID | idperson |idevent|
---------------------------------
| 1 | 1 | 2 |
| 2 | 1 | 5 |
| 3 | 2 | 5 |
| 4 | 4 | 2 |
| 5 | 2 | 1 |
| 6 | 6 | 3 |
---------------------------------
所以我的问题是:
当我向一个人提供活动时,我想确保仍然有空座位。因此我需要从预订中计算idevent,并检查活动中的座位数是否已达到。最后,我想有一个名单与所有可用的事件,该人还没有预订。
如何编写查询?
1条答案
按热度按时间yruzcnhs1#
最后,我想有一个名单与所有可用的事件,该人还没有预订。
下面是一种使用相关子查询的方法:
问号表示要为其显示报告的人员的id。
第一个子查询过滤出此人已经预订的事件,第二个子查询确保仍然有可用的座位。
您可以通过使用单个子查询进行筛选来缩短查询,尽管这样会使查询更难执行: