1

データベースに 2 つのテーブルがあります。

$ SELECT * from image
+----------+------+-----+
| image_id | good | bad |
+----------+------+-----+
|        1 |    2 |   0 |
|        2 |    1 |   0 |
|        3 |    0 |   0 |
|        4 |    1 |   0 |

$ SELECT * from image_tag_map
+----------+--------+-------+
| image_id | tag_id | score |
+----------+--------+-------+
|        1 |      1 |   255 |
|        2 |      1 |   255 |
|        3 |      1 |   255 |
|        4 |      2 |   255 |

SELECT * FROM image_tag_map WHERE tag_id=$tagID and score>=5;
result : 1, 2, 3 (image_id)

SELECT * FROM image WHERE good!=0 ORDER BY good DESC;
result : 1, 2, 4 (image_id)

結果として1、2が欲しいです。(つまり、これら 2 つのコマンドが混在しています) 「image_id」が両方の場所にあります。INNER JOIN などで試してみましたが、うまくいくものが見つかりません...

4

7 に答える 7

0

を使用する以外に、使用JOINすることもできますEXISTS

SELECT  a.*
FROM    image a
WHERE   a.good <> 0 AND
        EXISTS
        (
            SELECT  1
            FROM    image_tag_map b
            WHERE   a.image_id = b.image_id AND
                    tag_id = $tagID AND 
                    score >= 5
        )
ORDER   BY a.good DESC
于 2013-08-19T13:56:39.243 に答える