2012-11-30 6 views
1

데이터 :복잡한 mysql을 선택 쿼리

  1. 테이블 모양 : shape_id, shape_name
  2. 테이블 shape_forms : shape_form_id, shape_id, shape_form
  3. shape_form이 될 수 : 0 - 1 - 사각형, 2 - 삼각형 - 각 모양의 수는 무제한

나는

  1. shape_forms에 포함 된 모든 모양을 선택하는 2 개 쿼리를 필요로 모두 원과 삼각형 또는 아니라 사각형 서클 또는 유일한 shape_forms에 포함
  2. 모든 모양은 삼각대를 삼각형 만

제발,이 작업을 해결하기위한 몇 가지 힌트를주세요! 나는 shape_forms은 "그룹화"를 사용하지 않는 제한 만하고있어 더 적절한 솔루션

답변

1

1.

select s.shape_id 
from shapes s 
inner join shape_forms sf on sf.shape_id = s.shape_id 
group by s.shape_id 
having 
(
    sum(shape_form = 1) = 0 
    and sum(shape_form in (0,2)) >= 2 
) 
or sum(shape_form <> 0) = 0 

2.

select s.shape_id 
from shapes s 
inner join shape_forms sf on sf.shape_id = s.shape_id 
group by s.shape_id 
having sum(shape_form <> 2) = 0 
+0

감사가없는 경우! 그냥 내가 뭘 찾고 있었는지! 복잡한 "사용"부분에 대해 생각해 본 적이 없습니다. :) –