タグシステムを実装しています...
現在、、、、フィールドtags
を持つテーブルがあります。name
description
createdby
そして、images
フィールドを持つテーブルtags
。このフィールド内に、テーブルのタグ名をtags
コンマで区切って入力します。
しかし、タグ付きのすべての画像を取得したい場合Foo
、クエリを作成するにはどうすればよいですか?フィールドにはコンマで区切られた複数のタグが含まれるためです。
画像テーブルの正規化を検討したかどうかはわかりませんが、ここではそれが最適なソリューションになります。
持っている代わりに
このようにテーブルを構成します
次に、このSQLステートメントを実行して、特定のタグを持つすべての画像を返すことができます
SELECT * FROM images
WHERE tags = 'forest';
または、テーブルを現在の形式に保つ必要がある理由がある場合は、次を使用できます。
SELECT * FROM images
WHERE tags LIKE '%forest%';
上記の2つの例の「森」という単語は、検索しているタグです。
そのようなことを試してください:
SELECT * FROM images WHERE tags = 'Foo' OR tags LIKE 'Foo,%' OR tags LIKE '%,Foo' OR tags LIKE '%,Foo,%'
次のようなフィールドにタグIDを保存しtags
ます:'、3,17,55、'
データベースへのクエリを実行すると、次のような高速な構造を使用できるようになります。
SELECT * FROM images WHERE INSTR(tags,',$tag_id,')>'0'
遅い「LIKE'%$tag_id'」を使用する代わりに