php - 按类别列出项目

标签 php mysql categories

我有 3 个表:

类别无关紧要

item2cat:itemID|catID

项目:id|name|desc

我想列出给定类别中的项目,但我不知道如何以简单的方式做到这一点。 (使用 PHP 和 MySQL)

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

最佳答案

您可能想要 join item 表上的 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 列现在是明确的。

关于php - 按类别列出项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2217030/

相关文章:

PHP 与 Google 的抓取问题 "I' m 感觉很幸运”

php - 在 CodeIgniter 中设置状态

php - 如何包含 php 变量作为表名的一部分?

php - magento 类别未显示在添加产品页面上?

python - 在 pyspark 中使用值范围和特定值创建 Bins

php - 使用 count() 输出每月和月份的总条目数

PHP输入表单,带有精确的金额数字

mysql - 谷歌地图标记 : directly from database, xml 或 json

ios - 在 uitapGestureRecognizer 上进行分类?

php - MySQL错误代码分类