【发布时间】:2015-05-01 13:23:15
【问题描述】:
对于一个作业,我必须为存储在运行 PostgreSQL 9.3.0 的 PostgreSQL 服务器中的数据库编写几个 SQL 查询。但是,我发现自己被最后一个查询阻止了。该数据库模拟了歌剧院的预订系统。该查询是关于将一名观众与每次协助相同事件的其他观众相关联。
模型如下所示:
Reservations table
id_res | create_date | tickets_presented | id_show | id_spectator | price | category
-------+---------------------+---------------------+---------+--------------+-------+----------
1 | 2015-08-05 17:45:03 | | 1 | 1 | 195 | 1
2 | 2014-03-15 14:51:08 | 2014-11-30 14:17:00 | 11 | 1 | 150 | 2
Spectators table
id_spectator | last_name | first_name | email | create_time | age
---------------+------------+------------+----------------------------------------+---------------------+-----
1 | gonzalez | colin | colin.gonzalez@gmail.com | 2014-03-15 14:21:30 | 22
2 | bequet | camille | bequet.camille@gmail.com | 2014-12-10 15:22:31 | 22
Shows table
id_show | name | kind | presentation_date | start_time | end_time | id_season | capacity_cat1 | capacity_cat2 | capacity_cat3 | price_cat1 | price_cat2 | price_cat3
---------+------------------------+--------+-------------------+------------+----------+-----------+---------------+---------------+---------------+------------+------------+------------
1 | madama butterfly | opera | 2015-09-05 | 19:30:00 | 21:30:00 | 2 | 315 | 630 | 945 | 195 | 150 | 100
2 | don giovanni | opera | 2015-09-12 | 19:30:00 | 21:45:00 | 2 | 315 | 630 | 945 | 195 | 150 | 100
到目前为止,我已经开始编写一个查询来获取观众的 id 和他正在参加的节目的日期,查询看起来像这样。
SELECT Reservations.id_spectator, Shows.presentation_date
FROM Reservations
LEFT JOIN Shows ON Reservations.id_show = Shows.id_show;
有人可以帮助我更好地理解问题并提示我找到解决方案。提前致谢。
所以我期待的结果应该是这样的
id_spectator | other_id_spectators
-------------+--------------------
1| 2,3
意味着每次 id 为 1 的观众去看表演时,观众 2 和 3 也去了。
【问题讨论】:
-
这里有一个提示——你只需要从一个表中选择。
-
@Hogan 你能不能说得具体一点。
-
真的吗?你不知道是哪张桌子?只有3个。哪个表有观众和节目的ID?
-
@Hogan,好的,是的,我想我们可以从 Reservations 表中获取 id_spectators 和 id_shows,但我不明白它如何引导我得到最终答案。
-
我有一个政策不回答标记有多个平台的问题,因为 sql 可能因平台而异还是postgresql?
标签: sql postgresql aggregate-functions common-table-expression relational-division