SQLを急きょ勉強しているのですが、本当にまだまだ不出来で、悩んでおります。
テーブルを3つ組み合わせて、特定のデータを取得しようとして、期待通りの結果が出ません。
以下の3つのテーブルがあったとします。
comments_table
| comment_ID | comment_content |
|---|---|
| 1 | hoge |
| 2 | fuga |
comment_meta_table
| meta_id | comment_id | meta_key | meta_value |
|---|---|---|---|
| 100 | 1 | type | type_A |
| 101 | 1 | userID | 776 |
| 102 | 2 | type | type_A |
| 103 | 2 | userID | 777 |
users_table
| user_ID | user_name |
|---|---|
| 776 | 一郎 |
| 777 | 二郎 |
「comment_meta_table」の「type」が「typeA」かつ、
「users_table」の「user_name」が「二郎」の、
「comments_table」の「comment_ID」を取得しよう思い、以下のように書きました。
SELECT DISTINCT comments_table.comment_ID FROM $comments_table INNER JOIN $comment_meta_table ON $comments_table.comment_ID = $comment_meta_table.comment_id INNER JOIN $users_table ON $comment_meta_table.meta_value = $users_table.ID WHERE ( comment_meta_table.meta_key = 'type' AND comment_meta_table.meta_value = 'type_A' ) AND users_table.user_nicename = '二郎')
上記の文の、WHERE以降の条件を、ANDでつなげずに、
WHERE comment_meta_table.meta_key = 'type' AND comment_meta_table.meta_value = 'type_A'
とするか、
WHERE users_table.user_nicename = '二郎'
とすると、片方の条件だけでの検索は実現するのですが、2つの条件をANDでつなげると、途端に何も選択されない状態になってしまいます。
上記のコードを見て、おかしな点がお分かりになる方がいらっしゃいましたら、どうかご教授頂けましたら幸いです。
どうか、どうか宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
2019/03/05 09:36
2019/03/05 09:54 編集