アイテムにタグシステムを実装しようとしています。タグは tags というテーブルに含まれており、項目をタグにリンクする別のテーブル tagitem があります。アイテムには複数のタグを付けることができます。商品を出品する際に、タグを全て一覧表示したい。私の質問は、1 つのクエリでこれを行う方法はありますか? アイテムの結果をタグ テーブルに結合すると、1 つのアイテム (複数のタグに対応) に対して複数のレコードが取得されるか、タグによるグループを含めると、1 つのレコードが取得されますが、最初のタグのみが取得されます。
もう 1 つの方法は、タグを取得するためだけに 2 番目のクエリを実行することですが、これは非効率的です。
Item table
Id | name
Tag table
Id | tag
Tagitem table
Id|itemid|tagid
Php
$sql = "select i.*,ti.*,t.*
FROM 'items' i
LEFT JOIN 'tagitem' ti
ON i.id=ti.itemid
LEFT JOIN 'tag' t
On ti.tagid=t.id
WHERE i.id='2'";
//returns multiple records
$sql.="group by i.id";
//returns only first tag
任意の提案のための Thx。