2013-11-21 4 views
0

У меня есть 2 стола: s_master и p_master.LEFT OUTER JOIN Запрос MySQL возвращает пустой набор результатов

S_master стол

s_id form_id 
---- ------- 
    1  kit011 
    2  kit011 
    3  kit011 
    4  kit011 
    5  kit011 

p_master стол заявление

s_id staus 
---- ------- 
    2  1 
    3  2 
    4  1 

Проблема:

Я должен принести s_id из s_master TABL e, которые являются NOT, имеющие статус в p_master стол. Это означает, что мне нужно получить 1,3,5.

Для этого я использовал следующий запрос.

SELECT a.s_id FROM s_master a 
    left outer join p_master b on a.s_id!=b.s_id 
where b.status=1 and a.form_id='kit011'; 

Но в результате это показывает «Пустой набор результатов».

Пожалуйста, предложите мне запрос. Заранее спасибо.

ответ

3

Попробуй так

SELECT s.s_id 
    FROM s_master s LEFT JOIN p_master p 
    ON s.s_id = p.s_id 
WHERE s.form_id = 'kit011' 
    AND (p.s_id IS NULL OR p.status <> 1); 

или

SELECT s_id 
    FROM s_master s 
WHERE form_id = 'kit011' 
    AND NOT EXISTS 
(
    SELECT * 
    FROM p_master 
    WHERE s_id = s.s_id AND status = 1 
); 
+0

была опечатка ошибка в ответе ('' s_master' был s_matser' и '' p_master' был p_matser'), который дает ошибку , отредактирован для исправления. –

+0

@BhavikShah Спасибо за вход. – peterm

+0

Ну, если вы хотите получить вывод из первого случая, как вы уже упоминали выше, тогда вам нужно будет применить предложение order by в конце запроса –

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