Я не уверен, какой тип базы данных вы используете, но я считаю, что вы, вероятно, можете использовать что-то вроде:
select * --you probably should narrow this down instead of using a *
from (table) OM
inner join (table) OL on OM.ORDER = OL.ORDER
inner join (table) C on OM.COMPANY = C.COMPANY
inner join (table) OSD on OSD.ORDER = OL.ORDER
and OSD.LINE = OL.LINE
and OSD.REVISION = OL.REVISION
and OSD.DIM = OSDD.DIM
inner join (table) OSDD on OSDD.SHAPE = OL.SHAPE
Это не в моей голове и не тестировалось, но идея в том, что он будет показывать все записи из OM, OL, C, OSD и OSDD, где найдены совпадения. поскольку вы не используете левое соединение в OSD или OSDD, у вас не должно быть нулевых строк.
Однако вы всегда можете изменить их на левые внешние соединения, например:
select * --you probably should narrow this down instead of using a *
from (table) OM
inner join (table) OL on OM.ORDER = OL.ORDER
inner join (table) C on OM.COMPANY = C.COMPANY
left outer join (table) OSD on OSD.ORDER = OL.ORDER
and OSD.LINE = OL.LINE
and OSD.REVISION = OL.REVISION
and OSD.DIM = OSDD.DIM
left outer join (table) OSDD on OSDD.SHAPE = OL.SHAPE
Это даст вам все строки из OM, OL и C и только строки из OSD и OSDD, в которых найдено совпадение. Затем у вас есть несколько вариантов подавления строк, которые вы не хотите видеть, например, использование формулы подавления he в эксперте раздела, как предложил rexem.
Надеюсь, это поможет.