2012-10-31 2 views
0

Таблица request имеет поля внешнего ключа job и user. Мне нужно вытащить подмножество строк, для которых один пользователь имеет как строку для job = 35, так и job = 34.Получить подмножество результата запроса

Выполняется ли этот запрос правильно? Я считаю, что это так.

SELECT * FROM `request` 
WHERE `job` = 35 AND `fulfilled` is NULL 
AND 
`user` IN 
(SELECT `user` FROM `request` WHERE `job` = 34 AND `fulfilled` is NULL) 
+0

Где 'UNION'? Кроме того, вы должны воздерживаться от использования 'SELECT *'. Всегда указывайте список столбцов. Почему вы не можете использовать только один запрос? '(SELECT user FROM request WHERE job IN (34, 35) И выполнил 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 
+0

Спасибо и благодарю вас за ссылку SQLFiddle; не знал о них! – jerrygarciuh

Смежные вопросы