私は3つのテーブル、画像、タグ、リンクを持っています(下の表)
ImageNO | TagNO
1 | Sport
2 | Cars
3 | Sport
4 | Sport
3 | Cars
1 | Music
2 | Sport
(明らかに、TagNO は実際のテーブルの数字になります)
私がやりたいことは、ユーザーが任意の数のタグを選択できるようにフィルタリングを許可することであり、画像はすべてのタグが選択された画像のみにフィルタリングされます。たとえば、ユーザーが「スポーツ」を選択すると、「imageNO」 1、3、4、および 2 が表示されます。ユーザーが "cars" も選択した場合、クエリは絞り込まれ、"imageNO" 3 と 2 のみが表示されます。
私はこれまで、ウェブ全体の例から多くのことを試してきましたが、これが最も近いものです...
SELECT *
FROM images
LEFT JOIN links
ON INO = links.INO
LEFT JOIN tags
ON tags.TagNO = links. TagNO
WHERE links. TagNO
IN ($tags)
GROUP BY INO
HAVING COUNT( INO ) >1
($tags) はタグ番号の配列です。
これに関する問題は、カウント数が > 1 ではなく = 1 であるため、タグが 1 つしかない画像が表示されないことです。事前に感謝します。