Вопрос

У меня 3 стола:

категория doesnt matter

item2cat: itemID|catID

вещь: id|name|desc

Я хочу перечислить элементы, которые находятся в данной категории, но я не знаю, как это сделать простым способом. (С PHP и MySQL)

Мне нужна эта табличная структура, потому что я хочу несколько категорий для одного предмета.

Это было полезно?

Решение

Вы, вероятно, хотите присоединиться Таблица 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])

ОБНОВИТЬ
Если вы изменили свои идентификаторы таблицы, как это:

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 Колонна каждой таблицы теперь однозначен.

Другие советы

Это должно быть эффективным и получить все соответствующие элементы в данной категории:

SELECT item.* 
   FROM item2cat
      JOIN item 
   ON item.id = item2cat.itemID
      and item2cat.catID = $categoryID
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top