首页 > 解决方案 > 根据同一列中的两个案例询问一个条件。sqlite3

问题描述

我正在尝试将海伦娜·邦哈布·卡特和约翰尼·德普主演的所有电影的名称插入到一个新表中。我首先从一个名为电影的表中选择信息,该表有一个标题和一个 ID。然后来自一个名为 stars 的表,该表有一个 movie_id 和一个 person_id。最后,我从一个名为 people 的表中进行选择,该表有一个 id 和 name 列。我认为我的问题出在工会线上,但我不知道为什么。

CREATE TABLE jh( title TEXT)
INSERT INTO jh(title)
SELECT movies.title
FROM movies
WHERE movies.id in ( SELECT stars.movie_id FROM stars WHERE stars.person_id in(SELECT 
people.id FROM people WHERE people.name = ' Johnny Depp' UNION SELECT people.id FROM people 
WHERE people.name = 'Helena Bonham Carter'))

标签: sqlsqlite

解决方案


您可以加入表格,过滤您想要的演员,按电影分组并将条件设置为 HAVING 子句:

SELECT m.title
FROM movies m
INNER JOIN stars s ON s.movie_id = m.id
INNER JOIN people p ON p.id = s.person_id
WHERE p.name IN ('Johnny Depp', 'Helena Bonham Carter')
GROUP BY m.id, m.title
HAVING COUNT(*) = 2 -- the number of the actors

推荐阅读