Ваш запрос состоит из трех частей.
- Присоединение к столам
- Группировка результатов по проекту
- Подсчет проектов на одного клиента
Первое легко. Он включает в себя поиск поля идентификатора клиента в каждой таблице и использование предложения JOIN
, в котором указаны два столбца (по одному в каждой таблице) для сопоставления. Это даст вам одну строку для каждого проекта, которая также содержит информацию для соответствующего клиента. Это почти то, что вы просите.
Сложно соединить второе и третье в одном запросе, а я бы не советовал. Если вы собираетесь поместить это в программу, вы можете легко обработать результат запроса. Для этого вам нужно добавить предложение ORDER BY
, чтобы указать сортировку по клиенту. Это поместит все проекты для каждого клиента в последующие строки.
Теперь вы можете написать цикл для обработки вывода. Как и он, он должен следить за двумя вещами:
- при изменении идентификатора клиента
- подсчет проектов
При этом он может легко отображать «заголовок группы» для каждого клиента и «нижний колонтитул группы» для количества проектов.