Редактирование select через left join

есть несколько таблиц (3), вывожу их вместе через left join, все хорошо, но возник такой вопрос. У меня выводится куча лишних строк, буд-то происходит вывод каждый с каждым, не подскажите, как это улучшить? Делаю вывод следующим образом:

SELECT * FROM in_fileindex_main main 
    LEFT JOIN in_fileindex_additionaly addit ON (main.DocumentNumber = addit.DocumentNumber) 
    LEFT JOIN in_fileindex_applicability app ON (main.DocumentNumber = app.DocumentNumber)
    WHERE 1

И вывод происходит примерно следующим образом:

------------------------------- -----------
|main_1|main_2|add_1|add_2|app_1|app_2|
---------------------------------------
|text1 |text2 |  1  |  2  |  x  |  z  |
---------------------------------------
|text1 |text2 |  1  |  2  |  y  |  c  |
---------------------------------------
|text1 |text2 |  3  |  4  |  x  |  z  |
---------------------------------------
|text1 |text2 |  3  |  4  |  y  |  c  |

Как видно, что вторая и четвертая строки являются лишними и данные "3" и "4", можно записать во вторую строку и смысл не изменится, т.к. строки побочных таблиц у меня не связаны между собой, они связаны только с главной по номеру. А мне нужно, чтобы вывелось примерно следующим образом:

    ------------------------------- -------
    |main_1|main_2|add_1|add_2|app_1|app_2|
    ---------------------------------------
    |text1 |text2 |  1  |  2  |  x  |  z  |
    ---------------------------------------
    |text1 |text2 |  3  |  4  |  y  |  c  |
    ---------------------------------------

Можно ли это как-то реализовать?


Ответы (1 шт):

Автор решения: Aziz Umarov

Попробуйте так

SELECT * FROM in_fileindex_main main 
LEFT JOIN in_fileindex_additionaly addit ON (main.DocumentNumber = addit.DocumentNumber) 
LEFT JOIN in_fileindex_applicability app ON (main.DocumentNumber = app.DocumentNumber AND addit.DocumentNumber = app.DocumentNumber)
WHERE 1

либо

SELECT * FROM in_fileindex_main main 
    LEFT JOIN in_fileindex_additionaly addit ON (main.DocumentNumber = addit.DocumentNumber) 
    LEFT JOIN in_fileindex_applicability app ON (main.DocumentNumber = app.DocumentNumber)
    WHERE (app.DocumentNumber ISNULL OR addit.DocumentNumber IS NULL OR addit.DocumentNumber = app.DocumentNumber)
→ Ссылка