문제
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])
업데이트
다음과 같은 테이블 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