Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Такой запрос / 4 сообщений из 4, страница 1 из 1
25.10.2004, 13:42
    #32752739
KhasDenis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Такой запрос
Есть три таблицы. Таблица клиентов, интернет услуг и дополнительных услуг.
Таблицы интернет услуг и дополнительных услуг имеют внешние ключи на таблицу клиентов (InternetService.clientId и AdditionalServices.clientId).
Необходимо одним запросом выбрать некоторую инфу по клиенту, интеренет тариф из таблицы InternetService и узнать потребляет ли он какой нибудь дополнительный сервис.

Набрасал такой запрос:
SELECT
distinct(Clients.id),
Clients.name,
Clients.phone,
InternetService.tariff,
AdditionalService.id
FROM Clients
LEFT JOIN InternetService ON Clients.id = InternetService.clientId
LEFT JOIN AdditionalServices ON Clients.id = AdditionalServices.clientId

проблема в том что если клиент потребляет несколько доп. сервисов, то по этому клиенту будем иметь несколько записей. Нужно ограничить только одной, т.е. если клиент потребляет более одного доп. сервиса остальные просто отбрасывать.
...
Рейтинг: 0 / 0
26.10.2004, 18:53
    #32755744
KhasDenis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Такой запрос
SELECT
Clients.id,
Clients.name,
InternetService.tariff,
count( AdditionalServices.id )
FROM Clients, InternetService, AdditionalServices
WHERE
Clients.id = InternetService.clientId AND
Clients.id = AdditionalServices.clientId
GROUP BY Clients.id, Clients.name, InternetService.tariff
...
Рейтинг: 0 / 0
26.10.2004, 18:58
    #32755754
KhasDenis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Такой запрос
Теперь если в таблице AdditionalServices запись по клиенту не представлена то мы его вообще не увидим. А нужно видеть ноль
...
Рейтинг: 0 / 0
27.10.2004, 11:01
    #32756383
KhasDenis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Такой запрос
вот так работает

SELECT
DISTINCT Clients.name,
Clients.phone,
InternetService.tariff,
count( AdditionalServices.id )
FROM Clients
LEFT JOIN InternetService ON Clients.id = InternetService.clientId
LEFT JOIN AdditionalServices ON Clients.id = AdditionalServices.clientId
GROUP BY
Clients.name,
Clients.phone,
InternetService.tariff

неплохой монолог получился
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Такой запрос / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]