我有3张桌子:
类别doesnt matter
item2cat:itemID|catID
项目:id|name|desc
我想列出给定类别中的项目,但我不知道如何以简单的方式执行此操作。 (使用PHP和MySQL)
我需要这个表格结构,因为我想要一个项目有多个类别。
答案 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