2017-01-21 13 views
0

Event_site_tag_luテーブルにあるイベントのみを返したいとします。しかし、私の声明はすべての出来事を返す。SQL LEFT JOINはフィルタリングされません

イベントテーブル

---+ 
Id | 
---+ 
1 | 
2 | 
3 | 
---+ 

Event_site_tag_luテーブル

---------+ 
event_id | 
---------+ 
1  | 
---------+ 

私のクエリは

SELECT `id` FROM event LEFT JOIN event_site_tag_lu ON event.id = event_site_tag_lu.event_id 
+0

を、次のような何かを書くことができないログからのイベントにのみ探しているなら、あなたが検索したい場合は、両方のテーブルも

SELECT event_test.* FROM event_test JOIN log ON event_test.id = log.id 

で試合を持つ行あなたが左の結合を望んでいないが、通常の結合を見つけることができます。またはこの場合はまったく参加しませんが、他の列も欲しいと思います。 –

+0

パーフェクト!ありがとうございました。 – bjacobs

答えて

1

LEFT JOINを一致する(一部のデータベースLEFT OUTER JOINを)からすべての行を返します。関係の第1のテーブルと他のテーブルの一致するデータその他の場合はNULL関係の第2のテーブルのデータのための特定の行

あなたが探しているのは、ちょうど取得するジョイン(インナー・ジョイン)ですあなたは、特定のデータは、あなたが

SELECT DISTINCT id from log 

Jsfiddle

2

あるので、あなたが本当に参加し、左を必要としない - 内部の作業を行います参加。

1

INNER

にLEFT変更

LEFTは左表のすべての行と一致

INNERが戻りのJOINリターンを登録しようでは唯一

+0

「一致」とは何を意味しますか? – bjacobs

+0

行のイベントテーブル(左側の表)のIDは、Event_site_tag_luテーブル(右側の表)のevent_idと一致します。 –

+0

LEFT JOINはそれらの一致も検索しますが、イベントテーブルのすべての行も追加します(左の表) –