Question

J'ai 3 tables:

Catégorie doesnt matter

item2cat: itemID|catID

Objet: id|name|desc

Je veux énumérer les éléments qui se trouvent dans la catégorie donnée, mais je ne sais pas comment le faire de manière simple. (Avec PHP et MySQL)

J'ai besoin de cette structure de table car je veux plusieurs catégories à un seul élément.

Était-ce utile?

La solution

Tu veux probablement rejoindre La table Item2CAT sur votre tableau d'articles:

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

METTRE À JOUR
Si vous avez changé vos identifiants de table comme ceci:

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

Vous pouvez 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 La colonne de chaque table est désormais sans ambiguïté.

Autres conseils

Celui-ci doit être efficace et obtenir tous les éléments pertinents dans une catégorie donnée:

SELECT item.* 
   FROM item2cat
      JOIN item 
   ON item.id = item2cat.itemID
      and item2cat.catID = $categoryID
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top