0

このアイテムのアイテムとカテゴリがあります。カテゴリには ID があります。アイテムのカテゴリ ID を DB に入れる必要がありますが、アイテムには 2 つ、3 つ、またはそれ以上のカテゴリを含めることができます。そして、私は何をする必要がありますか?

項目テーブルで、新しいセル名「カテゴリ」を作成し、カテゴリ ID をコンマ (7,4,8...) で入力しますか? この場合、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 に答える