Вопрос о SQL

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Netta
Новичок
Новичок
 
Сообщения: 37
Зарегистрирован: 25.11.2003 (Вт) 12:22
Откуда: Lithuanian

Вопрос о SQL

Сообщение Netta » 11.03.2004 (Чт) 10:25

Я объединяю два запроса при помощи Union и всё прекрасно работает, но если в запросах есть поле Count(Kompleks.Pavadinimas), то выкидывает ошибку. Может в объединениях нельзя использовать агрегатные функции?
А запрос такой:
"SELECT kompleks.Pavadinimas, kompleks.Apmokejimas, Count(Kompleks.Pavadinimas) FROM kompleks WHERE data >= '" & CStr(TPrad.Value) & "' and data <= '" & CStr(Tpab.Value) & "' UNION ALL SELECT baseinas.Pavadinimas, baseinas.Apmokejimas, Count(Baseinas.Pavadinimas) FROM baseinas WHERE data >= '" & CStr(TPrad.Value) & "' and data <= '" & CStr(Tpab.Value) & "';"

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 11.03.2004 (Чт) 10:50

Да, нет... Просто не понятно, что ты хочешь делать с остальными полями - значений же много - что записать в результирующее поле. К ним тоже надо применить какие-то агрегатные функции или выкинуть из запроса.
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 11.03.2004 (Чт) 10:51

А где GROUP BY? Кстати, он должен быть общим (или одинаковым) для всех частей юниона.

Netta
Новичок
Новичок
 
Сообщения: 37
Зарегистрирован: 25.11.2003 (Вт) 12:22
Откуда: Lithuanian

Сообщение Netta » 11.03.2004 (Чт) 11:11

Из каждой таблицы мне нужны поля "Pavadinimas" - название комплекса, "Apmokejimas"-вид оплаты и сумма повторяющихся полей. А нужны они для отчёта типа такой то комплекс оплаченный так то был зарегистрирован n раз. А так как сортировка полей никакого значения не имеет то GROUP BY я не использую.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 11.03.2004 (Чт) 11:22

А так как сортировка полей никакого значения не имеет то GROUP BY я не использую.

Не путай сортировку (order by) с группировкой (group by). Если у тебя в запросе есть агрегаты (а Count() к ним тоже относится), то все остальные выводимые поля должны быть перечислены в секции Group By.

Netta
Новичок
Новичок
 
Сообщения: 37
Зарегистрирован: 25.11.2003 (Вт) 12:22
Откуда: Lithuanian

Сообщение Netta » 11.03.2004 (Чт) 11:26

Спасибо попробую.

Ennor писал(а):
А так как сортировка полей никакого значения не имеет то GROUP BY я не использую.

Не путай сортировку (order by) с группировкой (group by). Если у тебя в запросе есть агрегаты (а Count() к ним тоже относится), то все остальные выводимые поля должны быть перечислены в секции Group By.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList