Нужны ли они в одном запросе? Причина, по которой я спрашиваю, заключается в том, что если вы это сделаете, вы предоставляете счетчик количества документов в папке для каждого документа.
Предполагая, что вы это сделаете, давайте разберем то, что у вас есть (это может быть не совсем то, что вы описали, но это будет хороший пример):
LinkedDocumentFolder - идентификатор, имя папки
LinkedDocument - идентификатор, LinkedDocumentFolderID, описание
Первое, что вы ищете после списка документов, который, конечно, это:
SELECT * FROM LinkedDocument
Теперь, так как вам также нужна информация о папке, вам нужно присоединиться к ней:
SELECT ldf.FolderName, ld.*
FROM LinkedDocument ld
INNER JOIN LinkedDocumentFolder ldf ON ldf.ID = ld.LinkedDocumentFolderID
Теперь самое интересное. Поскольку мы предполагаем, что вы хотите, чтобы список документов, включенных в каждую запись возвращенного набора данных, теперь вам нужно включить подсчет с этим конкретным списком. То, что вы хотите, будет добавить в другое объединение, которое работает только на счетах:
SELECT ldf.FolderName, ld.*
FROM
LinkedDocument ld
INNER JOIN LinkedDocumentFolder ldf ON ldf.ID = ld.LinkedDocumentFolderID
INNER JOIN (
SELECT LinkedDocumentFolderID, COUNT(ID) AS DocCount
FROM LinkedDocument
GROUP BY LinkedDocumentFolderID
) AS CNT ON cnt.LinkedDocumentFolderID = ldf.ID