![]() |
|
Модераторы: skyboy |
![]()
|
|
| RockClimber |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: нет Всего: 15 |
Начал изучать SQL недавно, пока активно вкуриваю мануалы, но не всегда получается...
Есть две таблицы в базе (postgree, если это имеет значение).
Полей на самом деле больше, но они не имеют значения. Мне нужно было построить запрос, который будет возвращать список сотрудников (поле loginname) определенного филиала (поле filials; номеров филиалов может быть несколько через запятую; в приведеннос примере - 20-й филиал) и количество закрепленных за каждым из них клиентов (список в таблице data_clients). Таблицы связаны по полям locallogin и loginid. Опытно-экспериментальным путем было установлено, что правильный результат возвращает такой запрос:
Я плохо понимаю, почему работает именно такой запрос. Если все условия перечислить после where или having, то результат не имеет никакого отношения к действительности. Чем они отличаются? -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
||||
|
|||||
| Magnifico |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 23.1.2008 Где: Московская област ь Репутация: 4 Всего: 17 |
where накладывает фильр(поиск) записей на основной запрос (без группировки)
а having накладывает фильр(поиск) записей для группировки (group by) -------------------- Всё в порядке - спасибо зарядке ! |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
сначала выбираются все строки из всех указанных в секции from таблиц.
потом отбрасываются все строки, которые не удовлетворяют условиям в where. потом происходит группировка по полям, указанным в group by. потом обрасываются те записи результата, которые не удовлетворяют условиям в having |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: нет Всего: 15 |
О! Коротко и ясно! Спасибо!
-------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
забыл: ещё в конце происходит сортировка
|
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: нет Всего: 15 |
Ну уж про сортировку-то я и сам догадался
-------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |