【发布时间】:2018-12-17 17:00:26
【问题描述】:
我在 PostgreSQL 9.2.24 数据库中有表:
CREATE TABLE episodes_list (
mid serial PRIMARY KEY -- movie id
, title text NOT NULL
, is_movie integer NOT NULL -- 1 for movie, 0 for episode
);
我需要在剧集的左侧标题和所有电影(即使没有剧集的电影)的右侧标题上显示。
103 | Microcosmos (high quality) | 1
103 | Snails' sexual act | 0
103 | Landing | 0
这里有一些记录。所以例如。 'Microcosmos'应该在右边两次,蜗牛的性行为和着陆在左边。应该是这样的:
Landing | Microcosmos (high quality)
Snails' sexual act | Microcosmos (high quality)
我是这样写的:
select e1.title, e2.title from episodes_list e1 right join episodes_list e2 on e1.is_movie = 0 and e2.is_movie = 1 and e1.mid = e2.mid;
但它仍然显示在剧集的正确标题上,而不是只显示在电影标题上(所以我得到了我不应该得到的额外台词)。所以它看起来像这样: 但它看起来像这样:
Landing | Microcosmos (high quality)
Snails' sexual act | Microcosmos (high quality)
| Snails' sexual act
我在这里做错了什么以及查询应该是什么样子?
【问题讨论】:
-
那太老了,现在不受支持。 Urgently consider upgrading to a current version.
-
我受伤了,但这是我大学的任务,我坚持使用这个版本
-
对你的大学来说不是很讨人喜欢,但对这个查询没有任何影响。
-
我继续添加了一个基于猜测的表定义。如有不妥请edit。
-
将
is_movie integer NOT NULL转换为episode_type_id并添加一个表episode_type可能更有意义,其中存储类型movies和episode这样您可以更轻松地添加@ 987654333@以后输入例如。
标签: sql postgresql join