【问题标题】:Asking a condition based on two cases in the same column. sqlite3根据同一列中的两个案例询问一个条件。 sqlite3
【发布时间】:2021-01-22 15:22:11
【问题描述】:

我正在尝试将海伦娜·邦哈布·卡特和约翰尼·德普主演的所有电影的名称插入到一个新表中。我首先从一个名为 movies 的表中选择信息,该表有一个标题和一个 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'))

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

    您可以加入表格,筛选您想要的演员,按电影分组并设置 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
    

    【讨论】:

      【解决方案2】:

      我真的建议你不要做这样的查询。例如,您可以在一个 WHERE 条件中选择所有名称。如果您有多个表需要连接,请准备好使用 JOIN。

      SELECT M.Title
      FROM Movies M INNER JOIN Stars S on M.id = S.Movie_Id 
      INNER JOIN People P on S.PersonID = P.PersonID
      WHERE P.Name in ('Johnny Depp','Helena Bonham Carter')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-30
        • 1970-01-01
        • 1970-01-01
        • 2022-06-10
        • 2015-11-16
        • 2013-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多