質問

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top