質問
3つのテーブルがあります:
カテゴリー doesnt matter
item2cat: itemID|catID
アイテム: id|name|desc
指定されたカテゴリにあるアイテムをリストしたいのですが、簡単な方法でそれを行う方法がわかりません。 (PHPとMySQLを使用)
1つのアイテムに複数のカテゴリが必要なため、このテーブル構造が必要です。
解決
あなたはおそらくしたいです 加入 アイテムテーブルのitem2catテーブル:
SELECT
item.id
, item.name
, item.desc
FROM item
INNER JOIN item2cat ON item.id = item2cat.itemID
WHERE item2cat.catID = [category_id]
またはたとえば
SELECT
item.id
, item.name
, item.desc
, category.id
, category.name
FROM item
INNER JOIN item2cat ON item.id = item2cat.itemID
INNER JOIN category ON item2cat.catID = category.id
WHERE category.id IN ( [category_id], [category_id], [category_id])
アップデート
このようなテーブルIDを変更した場合:
item (itemId, name, desc)
item2cat (itemId, categoryId)
category (categoryId, name, etc)
次のような最初のクエリを書き換えることができます。
SELECT
item.itemId
, item.name
, item.desc
FROM item
INNER JOIN item2cat USING( itemId )
WHERE item2cat.categoryId = [category_id]
別の利点は、 id
すべてのテーブルの列が明確になりました。
他のヒント
これは効率的であり、特定のカテゴリに関連するすべてのアイテムを取得する必要があります。
SELECT item.*
FROM item2cat
JOIN item
ON item.id = item2cat.itemID
and item2cat.catID = $categoryID
所属していません StackOverflow