2016-03-22 8 views
-1

私は関係nは、これらのテーブルを持っている:M:クエリ多対多の関係テーブル

1) NEW 
ID_NEW, TITLE_NEW, SUBTITLE_NEW, CONTENT_NEW, CREATED_NEW, IMAGE_NEW, USER_ID 

2) TAG 
ID_TAG, NAME_TAG 

3) NEW_has_TAG 
NEW_ID, TAG_ID 

私がタグされ、たとえば、特定のタグを検索するクエリを見つけるしたいと思います「サッカー」です。参加すると、それは何かなど、新しい(s)は、タイトルのIDを持つリストを、創設場合その場合には

答えて

1

これは、基本的なSQLです:実は

SELECT 
    t.*, n.* 
FROM 
    tag t 
    LEFT JOIN new_has_tag nt ON t.id_tag = nt.id_tag 
    LEFT JOIN `new` n ON nt.new_id = n.id_new 
WHERE 
    t.name_tag = 'football' 

NEWは、SQLの予約キーワードです標準(MySQLもこの標準に準拠しています)ので、という名前のテーブルがあり、newではなく新しいテーブルがあります。

ANSI SQL modeが有効な場合は、"new"も識別子の有効な名前になります。

+1

二重引用符が機能するか、 'new'の前後に単一のバックチェックが必要ですか? –

+0

ANSI SQLモードが有効になっている場合、二重引用符が10回使用されます。追加してくれてありがとう、私はそれがほとんどの場合であるように、バックティックに変更しました。 –

+0

ありがとう! これはシングルクォートで動作し、少なくともMySQLでは対応していません:) – Kaaerreeene