2017-11-27 5 views
-1

테이블의 모든 행에 포함 된 모든 값을 선택해야합니다.
테이블 "성분"과 ProductIngredient가 있습니다 (제품 레시피가 있습니다).
성분테이블의 모든 행에 포함 된 값 찾기

| ingredient_id | name | price | 
| 1    | Bla | 100 
| 2    | foo | 50 

ProductIngredient. 이 ProductIngredient의 모든 행에서와 같이

| Product_id | ingredient_id 
| 1   | 1 
| 1   | 2 
| 2   | 1 

출력

| 1 | Bla | 

이어야한다.

SELECT DISTINCT Ingredient_Id 
FROM Ingredients I 
WHERE Ingredient_Id = ALL 
    (SELECT Ingredient_id FROM ProductIngredient PI 
    WHERE PI.Ingredient_Id = I.Ingredient_Id); 

코드가 작동하도록 수정하려면 어떻게해야합니까?

+4

샘플 데이터와 원하는 결과를 제공하십시오. 질문 문이 명확하지 않습니다. 예를 들어, 질문은 단일 테이블에 대한 것으로 보이지만 샘플 코드는 두 개를 참조합니다. –

+1

제대로 태그하십시오! 어느 쪽 이냐, MySQL 또는 Postgres ????? 둘 다있을 수는 없습니다. – Eric

답변

0

이렇게하면 각 제품에 대한 PI에있는 I의 모든 성분을 얻을 수 있습니다. 이것은 각 제품마다 제품 및 성분 조합에 대해 여러 행이 없다고 가정합니다.

SELECT I.Ingredient_Id 
FROM Ingredients I INNER JOIN ProductIngredient PI 
    ON PI.Ingredient_Id = I.Ingredient_Id 
GROUP BY I.Ingredient_Id 
HAVING COUNT(*) >= (SELECT COUNT(DISTINCT Product_id) FROM ProductIngredient) 
+0

네,하지만 모든 제품 (PI)에 들어있는 성분만을 필요로합니다 –

+0

각 제품별로 그룹별로 분류 하시겠습니까? 또는 모든 제품에 포함 된 재료를 원하십니까? – clinomaniac

+0

예, 모든 제품에 들어있는 성분 (: –