2012-10-31 4 views
0

테이블 request에는 외래 키 필드 jobuser이 있습니다. 한 사용자가 모두 job = 35 및 job = 34에 대한 행을 모두 가지고있는 행의 하위 집합을 가져와야합니다.쿼리 결과의 서브 세트 얻기

이 쿼리는 올바르게 수행되고 있습니까? 나는 그것이라고 생각한다.

+0

은'UNION'입니다

SELECT * FROM 'request' WHERE 'job' = 35 AND 'fulfilled' is NULL AND 'user' IN (SELECT 'user' FROM 'request' WHERE 'job' = 34 AND 'fulfilled' is NULL) 
Kermit

+0

행이나 사용자 만 필요합니까? 원래 쿼리는 행이 'job = '35'인 경우에만 반환됩니다. – jalynn2

답변

7
SELECT user 
FROM request 
WHERE job IN (34,35) AND `fulfilled` is NULL 
GROUP BY user 
HAVING COUNT(DISTINCT job) = 2 
? 또한`SELECT *`사용을 자제해야합니다. 항상 열 목록을 지정하십시오. 왜 당신은 단지 하나의 쿼리를 사용할 수 없습니까? `(SELECT 사용자가 작업 IN (34, 35)를 요청하고 IS NULL을 충족 시켰습니다.)`?
+0

감사합니다. SQLFiddle 링크에 감사드립니다. 그 (것)들을 인식하고 있지 않았다! – jerrygarciuh