Редактирование 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)