2012-08-28 3 views
1
SELECT DISTINCT mp.Group_Name FROM measurement_test mt, measurement_point mp, measurement_values mv 
         WHERE mt.Test_ID = mv.Test_ID AND mv.Point_ID = mp.Point_ID AND mt.ID_Number = 'WR20120603_05' 


SELECT DISTINCT mp.Group_Name FROM measurement_test mt, measurement_point mp, measurement_values mv 
         WHERE mt.Test_ID = mv.Test_ID AND mv.Point_ID = mp.Point_ID AND mt.ID_Number = 'WR20120603_04' 

위의 내용은 웹 페이지에서 사용하고있는 두 가지 쿼리입니다. 사실 나는 두 쿼리 사이에 결과의 공통 group_name 값만 가져오고 싶습니다.이 특별한 시나리오를 구현하는 다른 가능한 방법이 있을까요? 위의 두 쿼리를 단순하게 작성하고 있습니까?MYSQL 동일한 테이블에서 작업 연결

답변

2
SELECT mp.Group_Name 
FROM measurement_test mt 
inner join measurement_values mv on mt.Test_ID = mv.Test_ID 
inner join measurement_point mp on mv.Point_ID = mp.Point_ID 
WHERE mt.ID_Number in ('WR20120603_04', 'WR20120603_05') 
group by mp.Group_Name 
having count(distinct mt.ID_Number) = 2 
+0

+1 완전 답변! – Omesh

1

IN 절을 사용하여 간단하게 할 수 있습니다.

SELECT DISTINCT mp.Group_Name 
FROM measurement_test mt 
      INNER JOIN measurement_point mp 
       ON mt.Test_ID = mp.Test_ID 
      INNER JOIN measurement_values mv 
       ON mv.Point_ID = mp.Point_ID 
WHERE mt.ID_Number IN ('WR20120603_05', 'WR20120603_04') 
GROUP BY mp.Group_Name 
HAVING  COUNT(mp.Group_Name) = 2 
+1

그 중 하나 인'id_number's를 반환합니다. 그러나 OP는 일반적인 것을 원한다. –

관련 문제