给出了以下关系表/方案:
粗体是主键,斜体是外键:
- 城市(命名下,国家,人口)
-Venue(的 VID 下,容量,名称)
-Concert(的 KID , ID , DID ,持续时间)
-Performer(的 ID , KID ,年龄,姓名)
-Ticket(的 TID , KID ,价格,类型)
现在我的任务是找到所有音乐会,其中有更多的VIP门票而不是其他门票。 VIP是票证中的属性类型。老实说,我已经想过这个问题了。我的主要想法是如何分组KID,类型,计数(*)(门票)并以某种方式添加类型!= VIP的门票并选择低于VIP门票的地方,但我只是不知道如何正式做到这一点..
答案 0 :(得分:0)
这样的事情可行:
SELECT CONCERT.NAME FROM CONCERT
INNER JOIN TICKET ON CONCERT.KID = TICKET.KID
WHERE
(SELECT COUNT(CONCERT.KID) FROM CONCERT
INNER JOIN TICKET ON CONCERT.KID = TICKET.KID WHERE TYPE = 'VIP') >
(SELECT COUNT(CONCERT.KID) FROM CONCERT
INNER JOIN TICKET ON CONCERT.KID = TICKET.KID WHERE TYPE != 'VIP')