混淆标题对吗?让我解释一下:这是代码:
SELECT tmdb_movies.movie_title
,GROUP_CONCAT(DISTINCT videos.videos_name) as videos_name
FROM tmdb_movies
JOIN videos ON videos.videos_tmdb_id=tmdb_movies.tmdb_id
Where tmdb_movies.tmdb_id='31'
GROUP BY tmdb_movies.movie_title
现在这段代码没有回应。因为Where tmdb_movies.tmdb_id='31'
表中不存在videos
。但至少tmdb.movies.movie_title
应该回应。
如果其中一个JOIN行中不存在行,如何使其他内容回显?
如果您不理解这个问题,请让我解释一下我的表结构:
在此代码中,有两个名为tmdb_movies
和videos
的表。我正在使用一对多的关系。两个表都使用tmdb_id
这就是我的tmdb_movies
表格的样子:
tmdb_id movie_title
1 Ironman
2 Logan
3 Boy
4 Superman
这就是我的videos
表格的样子:
videos_tmdb_id videos_name
1 Ironman Trailer
2 Logan Trailer #1
2 Logan Trailer #2
3 Boy Trailer #1
3 Boy teaser
4 Superman Trailer #1
4 Superman Teaser
如果您需要更多信息,请告诉我。
答案 0 :(得分:2)
将JOIN
更改为LEFT JOIN
,如:
SELECT tmdb_movies.movie_title
,GROUP_CONCAT(DISTINCT videos.videos_name) as videos_name
FROM tmdb_movies
LEFT JOIN videos ON videos.videos_tmdb_id=tmdb_movies.tmdb_id
Where tmdb_movies.tmdb_id='31'
GROUP BY tmdb_movies.movie_title
再试一次。