Отображение данных и подсчет из нескольких баз данных в MySQL - PullRequest
0 голосов
/ 08 февраля 2009

У меня есть две таблицы, которые каким-то образом объединены. Я провел последний час, погугливая, не находя никаких конкретных ответов, которые сработали бы в моем случае.

Дело в том, что таблица 1 называется клиентами, а таблица 2 называется проектами. Мне нужно перечислить все имена клиентов, а затем количество проектов, связанных с этим проектом, и название проекта.

Например:

Клиент 1 (2 проекта)
- Название проекта 1
- Название проекта 2

Клиент 2 (0 проектов)

Клиент 3 (1 проект)
- Название проекта 1

Как это возможно, самым простым и простым способом?

Ответы [ 2 ]

0 голосов
/ 09 февраля 2009

Ваш запрос состоит из трех частей.

  1. Присоединение к столам
  2. Группировка результатов по проекту
  3. Подсчет проектов на одного клиента

Первое легко. Он включает в себя поиск поля идентификатора клиента в каждой таблице и использование предложения JOIN, в котором указаны два столбца (по одному в каждой таблице) для сопоставления. Это даст вам одну строку для каждого проекта, которая также содержит информацию для соответствующего клиента. Это почти то, что вы просите.

Сложно соединить второе и третье в одном запросе, а я бы не советовал. Если вы собираетесь поместить это в программу, вы можете легко обработать результат запроса. Для этого вам нужно добавить предложение ORDER BY, чтобы указать сортировку по клиенту. Это поместит все проекты для каждого клиента в последующие строки.

Теперь вы можете написать цикл для обработки вывода. Как и он, он должен следить за двумя вещами:

  1. при изменении идентификатора клиента
  2. подсчет проектов

При этом он может легко отображать «заголовок группы» для каждого клиента и «нижний колонтитул группы» для количества проектов.

0 голосов
/ 08 февраля 2009

Вы ничего не говорите о своем приложении, но я бы рекомендовал отделять запросы от отображения. Пусть SQL получит данные для вас, а затем пусть кто-нибудь другой сделает презентацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...