Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сложный запрос из многих таблиц 
V
    Опции темы
Akina
Дата 30.5.2011, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(aleksh @  30.5.2011,  18:50 Найти цитируемый пост)
попытка вставить это условие все портит...

Я даже теоретически не представляю, как это оно может всё портить... тем более когда отбор делается на правой стороне... добавь в модель это поле, заполни (некоторые), добавь условие отбора - всё обязано работать.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
aleksh
Дата 30.5.2011, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: нет
Всего: 13



грубо говоря

Код

select [tbl_account].CountryID
     , [tbl_account].StateID
     , count([tbl_account].id)
     , count([tbl_campaignaudience].id)
  from [tbl_account] left join [tbl_campaignaudience] on [tbl_account].id = [tbl_campaignaudience].AccountID
  where not [tbl_CampaignAudience].RoleID is null
group by [tbl_account].countryid
       , [tbl_account].StateID

так вот - без where цифры отличаются, то есть количество в бд в большинстве случаев больше количества в campaign, а с where цифры выравниваются
как не извращался, что к чему не left join-ил - никак
для иллюстрации измененная бд

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  ________________________.zip 32,70 Kb
PM MAIL   Вверх
Akina
Дата 30.5.2011, 20:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



aleksh, у Вас логика хромает. Вы хотите одно, а просите совсем другое. Отбор по not [tbl_CampaignAudience].RoleID is null нужно делать ДО связывания (или, что то же самое в данном случае - во время связывания), а не после.

Код

select [tbl_account].CountryID
     , [tbl_account].StateID
     , count([tbl_account].id)
     , count([tbl_campaignaudience].id)
  from [tbl_account] left join [tbl_campaignaudience] on (([tbl_account].id = [tbl_campaignaudience].AccountID) and ([tbl_CampaignAudience].RoleID is not null))
group by [tbl_account].countryid
       , [tbl_account].StateID




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
aleksh
Дата 30.5.2011, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: нет
Всего: 13



что б я сдох
не знал, что так можно...
а с логикой - не спорю, вполне может быть
большое спасибо
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0460 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.