2017-06-30 16 views
1

タイトル混乱?私は説明しましょう:ここにコードです:JOINテーブルの行が存在しない場合、何もecho(MySQL)

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_moviesvideos:このコードで

を、という名前の2つのテーブルがあります。私は1対多の関係を使用しています。

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 

と私はそれらを接続し、両方のテーブルがtmdb_id

これは私のtmdb_moviesテーブルがどのように見えるかであるを使用して相互に接続されていますこのような外部キーを介して: enter image description here

私にお知らせください、より多くの情報が必要な場合。

答えて

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 

し、再試行してください。勤務

Left Join Reference

+0

、それはデフォルトでは、JOINはどれ –

+0

簡単でしたか?自己結合? –

+0

'内部結合'、 '自己結合'は、2つのエイリアスを作成することによってsigleテーブルに加わることができるものです。 –

関連する問題