sql >> データベース >  >> RDS >> PostgreSQL

特定の単語でタグ付けされたすべての画像を選択するための多対多SQLクエリ

    これが私が書いた実用的なクエリです:

    SELECT i.id, i.relative_url, count(*) as number_of_tags_matched
    FROM   images i
        join tags_image_relations ti on i.id = ti.image_id
        join tags t on t.id = ti.tag_id
        where t.name in ('google','microsoft','apple')
        group by i.id having count(i.id) <= 3
        order by count(i.id)
    

    このクエリでは、最初に3つのタグすべてに一致する画像が表示され、次に3つのタグのうち少なくとも2つに一致する画像が表示され、最後に少なくとも1つのタグが表示されます。



    1. Oracleで行を列に動的にピボットする

    2. SQLは日時を変換し、時間を減算します

    3. ssisフラットファイルソースの不正な行をスキップする方法

    4. Oracleテーブル監査の追加日と変更日