Есть запрос:
select a.id from selzde.elorder a inner join selzde.elorder b on a.name = b.name and a.workname = b.workname and b.id = needId where a.id not in (select id_elorder from selzde.drugselorder)
как сделать SQL-запрос not in проще, используя только join?
not in
join
Соединение влево к drugselorder, на id_elorder = a.id, затем выберите те, которые не совпадают (то есть where drugselorder is null) ... Хотя я бы не сказал, что это было более "просто".
drugselorder
id_elorder = a.id
where drugselorder is null
select a.id from selzde.elorder a inner join selzde.elorder b on a.name = b.name and a.workname = b.workname and b.id = needId left outer join selzde.drugselorder d on a.id = d.id_elorder where d.id_elorder is null
Одним из решений было бы использование оператора MINUS, а не следующим образом:
select a.id from selzde.elorder a inner join selzde.elorder b on a.name = b.name and a.workname = b.workname and b.id = needId MINUS select id_elorder from selzde.drugselorder ;
Надеюсь, это поможет.
С уважением, Roger