Mysql
 sql >> Base de données >  >> RDS >> Mysql

Lister les éléments par catégorie

Vous voulez probablement rejoindre la table item2cat sur votre table item :

SELECT
  item.id
, item.name
, item.desc
FROM item
INNER JOIN item2cat ON item.id = item2cat.itemID
WHERE item2cat.catID = [category_id]

ou par exemple

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])

MISE À JOUR
Si vous avez modifié vos ID de table comme ceci :

item (itemId, name, desc)
item2cat (itemId, categoryId)
category (categoryId, name, etc)

vous pourriez réécrire la première requête comme :

SELECT
  item.itemId
, item.name
, item.desc
FROM item
INNER JOIN item2cat USING( itemId )
WHERE item2cat.categoryId = [category_id]

Un autre avantage est que le id colonne de chaque table est désormais sans ambiguïté.