SQL избыточные данные при left join
У меня есть основная таблица и несколько второстепенных. Одной записи из основной таблицы может соответствовать несколько записей из второстепенной. Мне нужно вывести их как единую таблицу, если я просто делаю через left join, то у меня выводится куча избыточной, дублирующей информации, которая мне не нужна.
Например:
SELECT *
FROM in_fileindex_main main
LEFT JOIN in_fileindex_additionaly add ON
(main.DocumentNumber = add.DocumentNumber)
LEFT JOIN in_fileindex_applicability app ON
(main.DocumentNumber = app.DocumentNumber)
WHERE 1;
То выведется что-то типа:
Как видно, add и app таблицы не связаны между собой, они связаны только с основной таблицей main. Можно ли как-то построить запрос, чтобы не было дублирующей информации и вывод был соответственно следующим:

Ответы (2 шт):
Используйте DISTINCT или просто можно сделать GROUP BY по ID (как пример GROUP BY main.id ). Но оптимальнее сделать DISTINCT т.к это сэкономит серверные ресурсы.
SELECT DISTINCT * FROM in_fileindex_main main LEFT JOIN in_fileindex_additionaly add ON (main.DocumentNumber = add.DocumentNumber) LEFT JOIN in_fileindex_applicability app ON (main.DocumentNumber = app.DocumentNumber) WHERE 1
UPDATE v.2
SELECT DISTINCT main.* FROM in_fileindex_main as main LEFT JOIN in_fileindex_additionaly as add ON (main.DocumentNumber = add.DocumentNumber) LEFT JOIN in_fileindex_applicability as app ON (main.DocumentNumber = app.DocumentNumber) WHERE 1
select c.name, m.pay, cp.cnt from Client c
left join (select clientID, sum(money) as pay from Pays group by clientID) m on c.clientID = m.clientID
left join (select clientID, count(productID) as cnt from ClientProducts group by clientID) cp on c.clientID = cp.clientID
