【问题标题】:Sql Query Retrieving Data from Multiple TablesSql 查询从多个表中检索数据
【发布时间】:2013-10-13 18:29:01
【问题描述】:

我想检索数据表格3,即指定表格

  • UserDetail(Fname,Lname,User_id),
  • 电影(Movie_id,MovieName)
  • UserLikedMovies(User_id,Movie_id)

这样,当用户输入特定的 Movie_id 时,Userid Fname Lname form User detail MovieName from Movies,, 这是我尝试过的

SELECT UserDetail.FName
FROM 
UserDetail UserDetail
INNER JOIN
UserLikedMovies UserLikedMovies
ON 
UserDetail.User_id = UserLikedMovies.User_id
INNER JOIN
(
    SELECT
        Movies.MovieName,
        Movies.Movie_id
    FROM
       Movies Movies
    INNER JOIN
        UserLikedMovies UserLikedMovies
        ON 
        Movies.Movie_id =  UserLikedMovies.Movie_id
    INNER JOIN
       UserDetail UserDetail
        ON 
        UserLikedMovies.User_id =  UserDetail.User_id
    WHERE
        Movies.Movie_id IN ( Select UserLikedMovies.Movie_id from UserLikedMovies where UserLikedMovies.Movie_id = 4)
) as ABC
ON UserLikedMovies.Movie_id = ABC.Movie_id
AND Movies.Movie_id = ABC.Movie_id

【问题讨论】:

  • 有错误吗?有什么退回来的吗?你还尝试过什么?我会从一个更简单的查询开始,比如一个内部连接,然后尝试先让它工作。

标签: php mysql sql ms-access


【解决方案1】:

假设movie_id为9,则查询如下。

SELECT User.Fname, User.Lname, (SELECT MovieName FROM Movies WHERE Movie_id = 9) AS MovieName FROM UserDetail用户 INNER JOIN UserLikedMovies Like ON User.User_id = Like.User_id WHERE Like.Movie_id = 9;

【讨论】:

    【解决方案2】:

    这是一个非常简单的查询:

    SELECT ud.`User_id`, ud.`Fname`, ud.`Lname`, m.`MovieName`
    FROM `Movies` m 
    RIGHT JOIN `UserLikedMovies` ulm ON ulm.`Movie_id` = m.`Movie_id`
    LEFT JOIN `UserDetail` ud ON ud.`User_id` = ulm.`User_id`
    WHERE m.`Movie_id` = 4
    

    我不知道你为什么在这个简单的任务中使用可怕的子查询。

    【讨论】:

    • 再次,同样的问题发生了,“语法错误。(缺少运算符)”。
    • 再来一次?为什么是“再次”?我没有看到任何关于 OP 错误的信息。我在您的问题中没有看到任何有关错误的提及。您能否使用有关您尝试使用的确切 SQL 平台的信息以及您在查询时收到的错误来扩展您的问题?我为 MySql 写了 ruery,因为你的问题有标签 mysql
    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多