概述: 我想获得个人资料列表和他们喜欢的电影。所有输出显示在一页上。我正在使用 mySQL 和 PHP,目前在本地主机上运行。理想情况下,为了速度,我希望它在一个查询中。
mySQL中的数据库表概览如下:
profile_tbl:
> id
> username
> about me
> gender
> hobbies
> profile_pic
> last_login
movies_tbl:
> id
> movie_name
> genre
> length
> rating
> description
profile_movies_rel_tbl
> id
> movie_id
> profile_id
输出:
我想显示 10 个个人资料和他们喜欢的所有电影的列表。我在想以下查询:
SELECT profile_tbl.*, movies_tbl.* FROM profile_tbl
LEFT JOIN profile_movies_rel_tbl
ON profile_movies_rel_tbl.movie_id = movies_tbl.id
LEFT JOIN profile_tbl
ON profile_tbl.id= profile_movies_rel_tbl.profile_id LIMIT 10
我还有第二个问题,我想列出所有选择了喜欢的电影的个人资料,页面应该同时列出个人资料和电影。 在这种情况下,我正在考虑使用上述查询并添加以下内容:
WHERE profile_movies_rel_tbl.movie_id = 4
任何人需要更多信息,请发表评论。
谢谢
最佳答案
我认为您想在子查询中使用 LIMIT 来返回 10 个不同的配置文件:
SELECT profile_tbl.*, movies_tbl.*
FROM (
SELECT DISTINCT Id FROM profile_tbl LIMIT 10
) LimitTable
INNER JOIN profile_tbl ON profile_tbl.Id=LimitTable.Id
LEFT JOIN profile_movies_rel_tbl
ON profile_movies_rel_tbl.profile_id = profile_tbl.id
LEFT JOIN movies_tbl
ON profile_movies_rel_tbl.movie_id = movies_tbl.id
这可能会返回超过 10 行,但它应该只包含 10 个配置文件。
如果您想要返回 10 行,然后考虑使用 GROUP_CONCAT 将您的电影合并到一个列中。
关于php - mySQL 在一个查询但三个表中使用复杂连接列出配置文件和电影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15178181/