두 개의 테이블 'Category'와 'Product'가 있습니다. 카테고리 I에는 catid
과 cat name
이 있습니다. 제품 표에는 item-id
, item-name
, catid
이 있습니다.SQL 복합 쿼리
내가 수행해야하는 작업은 item name
및 category name
의 결과를 표시하는 것입니다. 그러나 카테고리 이름은 여러 것입니다. 따라서 한 제품에 여러 범주가있을 수 있습니다.
두 개의 테이블 'Category'와 'Product'가 있습니다. 카테고리 I에는 catid
과 cat name
이 있습니다. 제품 표에는 item-id
, item-name
, catid
이 있습니다.SQL 복합 쿼리
내가 수행해야하는 작업은 item name
및 category name
의 결과를 표시하는 것입니다. 그러나 카테고리 이름은 여러 것입니다. 따라서 한 제품에 여러 범주가있을 수 있습니다.
스키마에 제품 테이블에 카테고리 ID가 있으면 아니오, 하나의 제품에는 여러 카테고리가있을 수 없습니다. 범주에 제품을 연결하는 또 다른 M : N 테이블이있는 경우 질문을 업데이트해야합니다.
당신은 다른 테이블에 해당하는 여러 줄이 각 라인을 허용 할하기 때문에 조인 테이블의 세 개의 테이블을 생성 할 수 있습니다 :
Category : catid catname
Product : itemid itemname
CategoryProduct : catid itemid
그래서 제품은 0, 1 개 이상의 카테고리를 가질 수를 . 귀하의 코멘트에 회신에서
catid itemid in CategoryProduct
1 3
1 4
2 3
2 4
:
이제품 테이블 의 카테고리 ID가 2처럼 두 제품 갖는 동일한 두 범주에 대한 조인 테이블
예 콘텐츠 , 3,4 그래서 1 제품은 여러 카테고리를 가질 수 있습니다
테이블 구조를 변경할 수 있다면 물론, KLE의 조언을 따르십시오. 이는 정상적이고 유지 보수가 가능한 접근 방식입니다. 당신은 테이블 구조를 변경할 수없는 경우
, 당신은이 같은 해킹으로 카테고리를 조회 할 수 있습니다
select *
from product p
inner join category c
on ',' + p.catid + ','
like '%,' + cast(c.catid as varchar) + ',%'
데이터베이스에 의존하지만, 예를 들어 MySQL에서는'ON find_in_set (c.catid, p.catid)'를 할 수 있습니다. –
제품 테이블의 범주 ID는 그래서 1 2,3,4와 같은 제품은 수있다 여러 카테고리가있는 경우 – Santanu
좋습니다. 그런 다음 http://en.wikipedia.org/wiki/Database_normalization을 읽어야합니다. 이러한 복합 열을 사용하면 어렵고 느리게 진행됩니다. –
데이터 모델에 영향을 주거나 주어진 데이터 모델에 영향을 줄 수 있습니까? 이것은 대부분의 사용 시나리오에서 매우 차선책이기 때문에. – tijmenvdk