按类别列出项目

时间:2010-02-07 14:20:27

标签: php mysql categories

我有3张桌子:

类别doesnt matter

item2cat:itemID|catID

项目:id|name|desc

我想列出给定类别中的项目,但我不知道如何以简单的方式执行此操作。 (使用PHP和MySQL)

我需要这个表格结构,因为我想要一个项目有多个类别。

2 个答案:

答案 0 :(得分:2)

您可能希望join项目表上的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列现在都是明确的。

答案 1 :(得分:0)

这个应该是有效的,并获得给定类别中的所有相关项目:

SELECT item.* 
   FROM item2cat
      JOIN item 
   ON item.id = item2cat.itemID
      and item2cat.catID = $categoryID