Список элементов по категории
-
19-09-2019 - |
Вопрос
У меня 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
Не связан с StackOverflow