0

我有这个项目的项目和类别。类别有一个 ID。我需要将项目的类别 ID 放入数据库中,但项目可以有 2,3 个或更多类别。而我需要做什么?

在项目表中创建一个新的单元格名称“类别”并使用逗号 (7,4,8...) 放置类别 ID?如果这样,那么如何在 PHP 中按类别搜索?

4

1 回答 1

3

如果我理解您的问题,您有一个可以有多个类别的项目。如果是这种情况,则不要将多个类别存储在同一列中。

您可能希望以这种方式设置您的表格:

create table item
(
  id int,  (PK)
  name varchar(10)
);

create table category
(
  id int,  (PK)
  name varchar(10)
);

create table item_category
(
  item_id int,  (FK)
  category_id int  (FK)
);

这将允许您将项目和类别放在单独的表中,然后使用连接表允许您的项目具有多个类别。

如果您有上表的以下示例数据:

insert into item values
  (1, 'item 1'), 
  (2, 'item 2');

insert into category values
  (1, 'category 1'), 
  (2, 'category 2');

insert into item_category values
  (1, 1), 
  (2, 1),
  (2, 2);

那么您的查询将与此类似:

select i.id item_id,
  i.name ItemName,
  c.id CategoryId,
  c.name CategoryName
from item i
left join item_category ic
  on i.id = ic.item_id
left join category c
  on ic.category_id = c.id

请参阅SQL Fiddle with Demo。这给出了结果:

| ITEM_ID | ITEMNAME | CATEGORYID | CATEGORYNAME |
--------------------------------------------------
|       1 |   item 1 |          1 |   category 1 |
|       2 |   item 2 |          1 |   category 1 |
|       2 |   item 2 |          2 |   category 2 |
于 2013-01-21T14:17:24.070 回答