2015-06-06 3 views
-1

У меня есть две таблицы. Одна категория, а другая - Продукты. Проблема в том, что один продукт может иметь более одной категории, и я не знаю, как это сделать.Mysql-внешние ключи и массив

Я связал таблицы с внешним ключом 1: n.

Благодаря

+2

звучит как ваш типичный многие ко многим. Вы должны создать промежуточную таблицу для ее устранения. Google it – bassxzero

+0

Вы создаете таблицу 'CategoryProduct' * link *. –

+1

Вопрос был отмечен дубликатом большинством в 3-2, но два из них были «Неясны, о чем вы спрашиваете». Я не знаю, является ли это дубликат или нет, потому что вы не объяснили, что вы пытаетесь выполнить или в чем проблема. Пожалуйста, прочитайте этот совет, задав хорошие вопросы: [[ask]], [[Написание идеального вопроса] (http://tinyurl.com/stack-hints)]. Обратите особое внимание на «Золотое правило», хотя я настоятельно советую вам прочитать всю статью. –

ответ

2

Вы бы нужен другой столик, может быть, называется ProductCategories. Каждая строка содержит внешний ключ для продукта и внешний ключ для категории. Если вы хотите найти категории продукта, запросите для всех ProductCategories с этим идентификатором продукта.

-1

на вашем столе продукта вы можете поставить две или несколько категорий с sring как отдельное значение
LowCost | bestsale | худший | -n (другие категории)

+1

Очень плохая идея. Вы должны держать ваши таблицы нормализованными, когда это возможно. –

+0

sory для плохой идеи ... ее легко, когда я использую это вместе с php как массив на ячейке записи –

+0

Вы столкнулись с проблемами производительности, когда ваши таблицы станут достаточно большими. –

0

Вы должны создать 3 таблицы и связанные с ними вместе, что-то как это:

Table: Items 
Columns: ID, Item_ID, Item_Title, Content 

Table: Tags 
Columns: Tag_ID, Tag_Title 

Table: Items_Tags 
Columns: Item_ID, Tag_ID 
  • iTEM_ID является внешним ключом в таблице Items.

  • Items_Tags - таблица корреляции.

И, например, для данного кода печатает все х теги:

SELECT * FROM items i 
LEFT JOIN item_tags it ON i.item_id = it.item_id 
LEFT JOIN tags t ON t.tag_id = it.tag_id 
WHERE tag_title = 'x' 
Смежные вопросы