Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > UNION + Sum


Автор: nyoga 13.2.2011, 21:12
Помогите пожалуйста в такой ситуации:
Есть запрос на объединение, оба запроса обращаются к одной таблице, но разные условия поиска. В результате Adodc должен найти сумму по всем записям из первого и второго запроса, но выдает суму первого или второго. Вот пример:

Код

Adodc2.RecordSource = ("SELECT Sum(Сума) FROM [Заявка] WHERE [Условие1...] UNION ALL SELECT Sum(Сума) FROM [Заявка] WHERE [Условие2...]"
If Adodc2.Recordset(0) <> "" Then
Label5.Caption = Adodc2.Recordset(0)
Else
Label5.Caption = "0,00"
End If 


Заранее благодарен!!!

Автор: Akina 13.2.2011, 22:37
В результате выполнения запроса в Adodc оказывается ДВЕ записи. Из какой должно быть взято значение Adodc2.Recordset(0)? правильно, а хрен его знает...


Автор: nyoga 13.2.2011, 22:55
Цитата

В результате выполнения запроса в Adodc оказывается ДВЕ записи.

В результате запроса в Adodc2 может быть и болше двух записей, но SUM(Сумма) должна ссумировать все знвчения по даному столбцу. Когда я использую запрос без объединения, то все нормально - ADODC2 суммирует все значения и Label отображает общую сумму, а с объединением не получается.

Автор: Akina 13.2.2011, 23:20
Цитата(nyoga @  13.2.2011,  23:55 Найти цитируемый пост)
В результате запроса в Adodc2 может быть и болше двух записей

Вы SQL первый раз видите? Запрос 
Код

SELECT Sum(поле) FROM Таблица Where Условия отбора

даёт СТРОГО одну запись. Без вариантов.
Запрос
Код

Подзапрос1 UNION Подзапрос2

где каждый подзапрос даёт СТРОГО ОДНУ запись, даёт или ОДНУ, или ДВЕ записи. Без других вариантов.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)