我有这个项目的项目和类别。类别有一个 ID。我需要将项目的类别 ID 放入数据库中,但项目可以有 2,3 个或更多类别。而我需要做什么?
在项目表中创建一个新的单元格名称“类别”并使用逗号 (7,4,8...) 放置类别 ID?如果这样,那么如何在 PHP 中按类别搜索?
问问题
105 次
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 回答