【发布时间】:2011-11-18 17:26:26
【问题描述】:
我有这些表:
电影信息:
- filminfo_id (int)
- filminfo_author (int)
- filminfo_title (varchar)
- filminfo_releaseYear (int)
类型:
- genre_id (int)
- genre_name (varchar)
电影流派:
- filmGenre_id (int)
- filmGenre_filmId (int)
- filmGenre_genreId (int)
用户
- user_id (int)
- user_firstname (varchar)
- user_lastname (varchar)
董事:
- director_id (int)
- director_firstname (varchar)
- director_lastname (varchar)
电影导演:
- filmDirector_id (int)
- filmDirector_filmId (int)
- filmDirector_directorId (int)
我想选择以下:
- filminfo_id
- 电影信息标题
- filminfo_releaseYear
- 流派名称(匹配电影流派)
- user_firstname(匹配 filminfo_author)
- user_lastname(匹配 filminfo_author)
- director_firstname(匹配电影导演)
- director_lastname(匹配电影导演)
我一整天都被这个问题困扰着。我喜欢能帮我解决这个问题的人!
到目前为止我做了什么:
SELECT
f.filminfo_title,
f.filminfo_releaseYear,
u.user_id,
u.user_firstName,
u.user_lastName,
d.director_firstname,
d.director_lastname,
GROUP_CONCAT(g.genre_name SEPARATOR ', ') genre
FROM (filmGenres fg, filmDirectors fd,filmActors fa)
INNER JOIN filminfo f ON f.filminfo_id = fg.filmGenre_filmId
INNER JOIN genres g ON g.genre_id = fg.filmGenre_genreId
INNER JOIN users u ON u.user_id = f.filminfo_author
INNER JOIN directors d ON d.director_id = fd.filmDirector_directorId
GROUP BY
f.filminfo_title,
f.filminfo_releaseYear
ORDER BY f.filminfo_releaseYear DESC
LIMIT 0,10;
请帮忙!
编辑:
我非常接近:
SELECT
f.filminfo_title,
f.filminfo_originalTitle,
f.filminfo_suggestedAge,
f.filminfo_runtime,
f.filminfo_releaseYear,
f.filminfo_description,
f.filminfo_youtubeId,
user_firstname,
user_lastname,
fi.filmImage_image,
GROUP_CONCAT(genre_name SEPARATOR ', ') as genrenames,
GROUP_CONCAT(CONCAT(director_firstname, ' ',
director_lastname) SEPARATOR ', ') as directors
FROM filmGenres fg
JOIN filminfo f ON f.filminfo_id = fg.filmGenre_filmId
JOIN users u ON u.user_id = f.filminfo_author
JOIN genres g ON g.genre_id = fg.filmGenre_genreId
JOIN filmDirectors fd ON fd.filmDirector_filmId = f.filminfo_id
JOIN directors d ON d.director_id = fd.filmDirector_directorId
JOIN filmImages fi ON fi.filmImage_id = f.filminfo_id
GROUP BY f.filminfo_title
但这会多次返回导演(例如:Ridley Scott、Ridley Scott)。我做错了什么?
【问题讨论】:
-
您发布的代码有什么问题?结果怎么不符合你的预期?
-
我已经编辑了我的第一篇文章。最后一条 SQL 有效,但它重复了导演姓名。这快把我逼疯了!
-
我已经编辑了我的答案,看看吧! :)
标签: mysql database many-to-many