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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с SUM и join таблицами, Проблемы с SUM и join таблицами 
V
    Опции темы
denis2105
Дата 17.12.2008, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день!

Код

SELECT 
        td.[Name] Napr,
        to1.Title Семинар,
        ta.[Name] Account,
        tc.[Name] AS Contact,
        tl.IsCertificate,
        tl.CertificateHourCount 
    FROM 
        tbl_Direction td
    LEFT OUTER JOIN
        tbl_Opportunity to1 ON to1.DirectionID = td.ID
    LEFT OUTER JOIN
        tbl_SeminarRegistration tsr ON tsr.SeminarID = to1.ID
    LEFT OUTER JOIN
        tbl_Account ta ON ta.ID = tsr.AccountID
    LEFT OUTER JOIN
        tbl_Listener tl ON tl.SeminarRegistrationID = tsr.ID
    LEFT OUTER JOIN 
        tbl_Contact tc ON tc.ID = tl.ContactID
WHERE 
    (tl.IsCertificate = 1) 
ORDER BY 
    Contact


Вывод:
Право интеллектуальной собств..  Семинар 005    ГидроОГК                   Иванов Иван Иванович      1    12
Направление 001                    Семинар 006    Организация 002           Иванов Иван Иванович      1    22
Направление 001                         Семинар 006    Организация 002           Иванов Иван Иванович      1    11
Право интеллектуальной собств..  Семинар 005    ГидроОГК                   Петров Петр Петрович      1    22

А нужно:
Право интеллектуальной собств..  Семинар 005    ГидроОГК                   Иванов Иван Иванович      2    43
Направление 001                    Семинар 006    Организация 002           Иванов Иван Иванович      2    33

Не могу понять как сделать.  smile 

PM MAIL   Вверх
Sovereign
Дата 17.12.2008, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ну так поставь 

WHERE 
    (tl.IsCertificate = 2) 

в чем проблема то?
PM MAIL   Вверх
Бонифаций
Дата 17.12.2008, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



.. group by 

Код

SELECT 
        td.[Name] Napr,
        to1.Title Семинар,
        ta.[Name] Account,
        tc.[Name] AS Contact,
        sum(tl.IsCertificate),
        sum(tl.CertificateHourCount )
    FROM 
        tbl_Direction td
    LEFT OUTER JOIN
        tbl_Opportunity to1 ON to1.DirectionID = td.ID
    LEFT OUTER JOIN
        tbl_SeminarRegistration tsr ON tsr.SeminarID = to1.ID
    LEFT OUTER JOIN
        tbl_Account ta ON ta.ID = tsr.AccountID
    LEFT OUTER JOIN
        tbl_Listener tl ON tl.SeminarRegistrationID = tsr.ID
    LEFT OUTER JOIN 
        tbl_Contact tc ON tc.ID = tl.ContactID
WHERE 
    (tl.IsCertificate = 1) 
group by Napr, Seminar, Account, Contact
ORDER BY 
    Contact



--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
denis2105
Дата 17.12.2008, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Sovereign @ 17.12.2008,  09:42)
ну так поставь 

WHERE 
    (tl.IsCertificate = 2) 

в чем проблема то?

Нужна сумма по колонке tl.CertificateHourCount 
т.е. для всех  Napr - у которых есть Семинар - у которых есть Account - у которых есть Contact - у которых есть tl.IsCertificate = 1, + SUM(tl.CertificateHourCount) 

"4.14.2.2.    Контакты по количеству часов и сертификатам
Создать отчет в котором будут отображаться контакты у 
которых количество часов с сертификатом превышает 72 
часа по какому либо направлению."


Добавлено @ 10:07
Цитата(Бонифаций @ 17.12.2008,  09:50)
.. group by 

Код

SELECT 
        td.[Name] Napr,
        to1.Title Семинар,
        ta.[Name] Account,
        tc.[Name] AS Contact,
        sum(tl.IsCertificate),
        sum(tl.CertificateHourCount )
    FROM 
        tbl_Direction td
    LEFT OUTER JOIN
        tbl_Opportunity to1 ON to1.DirectionID = td.ID
    LEFT OUTER JOIN
        tbl_SeminarRegistration tsr ON tsr.SeminarID = to1.ID
    LEFT OUTER JOIN
        tbl_Account ta ON ta.ID = tsr.AccountID
    LEFT OUTER JOIN
        tbl_Listener tl ON tl.SeminarRegistrationID = tsr.ID
    LEFT OUTER JOIN 
        tbl_Contact tc ON tc.ID = tl.ContactID
WHERE 
    (tl.IsCertificate = 1) 
group by Napr, Seminar, Account, Contact
ORDER BY 
    Contact


Msg 207, Level 16, State 3, Line 34
Invalid column name 'Napr'.
Msg 207, Level 16, State 3, Line 34
Invalid column name 'Seminar'.
Msg 207, Level 16, State 3, Line 34
Invalid column name 'Account'.
Msg 207, Level 16, State 3, Line 34
Invalid column name 'Contact'.
Msg 207, Level 16, State 3, Line 34
Invalid column name 'Napr'.
Msg 207, Level 16, State 3, Line 34
Invalid column name 'Seminar'.
Msg 207, Level 16, State 3, Line 34
Invalid column name 'Account'.
Msg 207, Level 16, State 3, Line 34
Invalid column name 'Contact'.


Это сообщение отредактировал(а) denis2105 - 17.12.2008, 10:10
PM MAIL   Вверх
TaNK
Дата 17.12.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

SELECT 
        td.[Name] Napr,
        to1.Title Семинар,
        ta.[Name] Account,
        tc.[Name] AS Contact,
        sum(tl.IsCertificate),
        sum(tl.CertificateHourCount )
    FROM 
        tbl_Direction td
    LEFT OUTER JOIN
        tbl_Opportunity to1 ON to1.DirectionID = td.ID
    LEFT OUTER JOIN
        tbl_SeminarRegistration tsr ON tsr.SeminarID = to1.ID
    LEFT OUTER JOIN
        tbl_Account ta ON ta.ID = tsr.AccountID
    LEFT OUTER JOIN
        tbl_Listener tl ON tl.SeminarRegistrationID = tsr.ID
    LEFT OUTER JOIN 
        tbl_Contact tc ON tc.ID = tl.ContactID
WHERE 
    (tl.IsCertificate = 1) 
group by td.[Name], to1.Title, ta.[Name], tc.[Name]
ORDER BY 
    tc.[Name] 


Это сообщение отредактировал(а) TaNK - 17.12.2008, 10:53


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
denis2105
Дата 17.12.2008, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ура, отработала, всем СПАСИБО, это получается что, если применяются агр. функции group by надо делать по каждому полю?

Это сообщение отредактировал(а) denis2105 - 17.12.2008, 12:33
PM MAIL   Вверх
TaNK
Дата 17.12.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ура, отработала, всем СПАСИБО, это получается что, если применяются агр. функции group by надо делать по каждому полю?
КОНЕЧНО


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


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


 




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


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

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