Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/19: Рейтинг темы: голосов - 19, средняя оценка - 4.63
1 / 1 / 3
Регистрация: 07.10.2011
Сообщений: 56
.NET 4.x

Множественная выборка из базы, стоит ли создавать множество однотипных запросов

27.06.2012, 15:00. Показов 3487. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу подсказать, как правильно стоит делать. Из существующей базы необходимо создадть отчет. База примерно такая: Уникальный номер, дата, сумма, тип и множество полей в которые в зависимости от условий вносится 1 либо 0. Задача теперь создать отчет. К примеру необходимо вытащить из столбца i101 данные, если в столбце type совпадает с тем, что необходимо
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SqlCommand com = new SqlCommand("Select moneyt, i101 From Torg where [datet]BETWEEN '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "' AND '" + dateTimePicker2.Value.ToString("yyyy-MM-dd") + "' AND [type] LIKE '" + typea + "'" + "", sc);
 
            int i101 = 0;
            using (SqlDataReader dr = com.ExecuteReader(CommandBehavior.CloseConnection))
            {
                
                for (int i = 0; i < dr.FieldCount; i++)
                    while (dr.Read())
                    {
                       int temp = dr.GetInt32(i);
                       i101 += temp;
                       
                    }
                
            }
            label23.Text = (Convert.ToString(i101));
То есть в столбце 1 или 0, и мне необходима итоговая сумма.
Вопрос: таких столбцов много, как вы поступаете в таком случае? Создаете множество однотипных запросов?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.06.2012, 15:00
Ответы с готовыми решениями:

CListBox, множественная выборка
Программа на MFC, суть проста: сделать множественную выборку из одного листбокса в другой, из первого при этом элементы...

Множественная выборка в ассоциативный массив
Приветы. Изучаю MySQL, столкнулся с небольшой трудностью. Задача: Есть таблица с 3 колонками id, login, password. Цель: по id...

Множественная выборка по времени и дате
Не удается написать запрос по времени и дате с произвольной выборкой данных. Пример записи времени: 30.10.2018 14:00:00 ...

24
47 / 47 / 7
Регистрация: 09.06.2012
Сообщений: 148
27.06.2012, 15:57
Если я правильно поняла задачу, Вам требуется найти общую сумму по столбцу, для этого в SQL есть встроенная функция Sum() :
SQL
1
SELECT SUM(column_name) FROM TABLE_NAME
1
1 / 1 / 3
Регистрация: 07.10.2011
Сообщений: 56
29.06.2012, 17:06  [ТС]
То есть там где пишется
C#
1
SqlCommand com = new SqlCommand("Select moneyt, i101 From Torg where [datet]BETWEEN '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "' AND '" + dateTimePicker2.Value.ToString("yyyy-MM-dd") + "' AND [type] LIKE '" + typea + "'" + "", sc);
писать вместо select запрос суммы? Но это же получается все равно создавать множество однотипных запросов?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
29.06.2012, 17:12
Агрегатные функции для того и нужны. Все правильно вам подсказали
0
1 / 1 / 3
Регистрация: 07.10.2011
Сообщений: 56
29.06.2012, 17:54  [ТС]
Подскажите где писать? Вместо этого Select moneyt, i101 From Torg where [datet]BETWEEN '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "' AND '" + dateTimePicker2.Value.ToString("yyyy-MM-dd") + "' AND [type] LIKE '" + typea + "'" + "", sc?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
29.06.2012, 18:01
Сформулировать задачу яснее - что суммировать надо?
0
1 / 1 / 3
Регистрация: 07.10.2011
Сообщений: 56
02.07.2012, 11:36  [ТС]
Необходимо суммировать к примеру столбец сумма, если он подходит под условия (входит в период даты и имеет тип у другого столбца например аукцион).
0
02.07.2012, 12:04

Не по теме:

Да возьмите вы какую-нибудь книжку про SQL, это обычные примитвные запросы.

0
1 / 1 / 3
Регистрация: 07.10.2011
Сообщений: 56
02.07.2012, 12:39  [ТС]
запрос у меня и так готов, можете выше глянуть, просто в отчете таких столбцов много. Поэтому у меня и вопрос как решают это профессионалы.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
02.07.2012, 12:52
И суммирование и условия, все можно включить в один запрос, при любом количестве столбцов и условий.
1
1 / 1 / 3
Регистрация: 07.10.2011
Сообщений: 56
02.07.2012, 17:28  [ТС]
Подскажите пожалуйста где это можно найти. Сколько искал в гугле множественные запросы все не могу найти, поэтому написал о помощи здесь.
0
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 4
02.07.2012, 18:14
Вопрос до конца не понятен, но если я правильно Вас понял, то делать как-то так...
C#
1
2
"select moneyt, i101, summa from
(Select moneyt, i101 From Torg where [datet]BETWEEN '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "' AND '" + dateTimePicker2.Value.ToString("yyyy-MM-dd") + "' AND [type] LIKE '" + typea + "'" + ") q" + " left join (select sum(moneyt) as summa from From Torg where [datet]BETWEEN '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "' AND '" + dateTimePicker2.Value.ToString("yyyy-MM-dd") + "' AND [type] LIKE '" + typea ") sm on 1=1"
Можно написать подзапрос в основном запросе
C#
1
"Select moneyt, i101,  (select sum(moneyt) as summa from From Torg where [datet]BETWEEN '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "' AND '" + dateTimePicker2.Value.ToString("yyyy-MM-dd") + "' AND [type] LIKE '" + typea ") as  summa From Torg where [datet]BETWEEN '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "' AND '" + dateTimePicker2.Value.ToString("yyyy-MM-dd") + "' AND [type] LIKE '" + typea + "'" + "", sc);
...Что конкретно надо?
0
1 / 1 / 3
Регистрация: 07.10.2011
Сообщений: 56
03.07.2012, 11:40  [ТС]
Подзапросов создавать можно много? Создается запрос "Select столбец, столбец2, и ....... (дальше подзапрос что суммируется и условия. В итоге получается таблица, аднные в удобном виде из которой вытаскивать удобнее через Report отчет. Я все верно понял?
0
47 / 47 / 7
Регистрация: 09.06.2012
Сообщений: 148
03.07.2012, 12:18
если Вам нужна только сумма столбца i101, то запрос будет примерно такой:
SQL
1
2
3
4
5
SELECT SUM(i101) AS Summa1 
FROM Torg 
WHERE [datet] BETWEEN '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "' 
AND '" + dateTimePicker2.Value.ToString("yyyy-MM-dd") + "' 
AND [TYPE] LIKE '" + typea + "'"
т.е. просто вставляете SUM() в нужное место и убираете moneyt, поскольку SQL не позволит Вам выбрать второй столбец, не входящий в GROUP BY или в др функцию типа суммы.
0
1 / 1 / 3
Регистрация: 07.10.2011
Сообщений: 56
03.07.2012, 12:28  [ТС]
в том то и дело, что мне нужно узнавать сумму множества столбцов. около 20. и поэтому писать столько кода довольно муторно. Поэтому и спрашиваю как будет грамотно этого избежать. Вывод в предыдущем моем сообщении верный?
0
47 / 47 / 7
Регистрация: 09.06.2012
Сообщений: 148
03.07.2012, 12:32
У Вас для всех столбцов одинаковое условие будет? если да, то просто вставляйте
SQL
1
"SELECT Sum(столбец1) as sum1, Sum(столбец2) as sum2 ... Sum(столбецN) as sumN FROM ..."
1
1 / 1 / 3
Регистрация: 07.10.2011
Сообщений: 56
03.07.2012, 14:33  [ТС]
В итоге получается итоговая таблица, данные из которой оператор может увидеть через Crystal Report? Все верно?
0
1 / 1 / 3
Регистрация: 07.10.2011
Сообщений: 56
17.07.2012, 16:47  [ТС]
Помогите добить этот запрос. Дошел до такого запроса
C#
1
string com = "Select Sum(moneyt) as бабло, Sum(i101) as Кол From Torg where [datet]BETWEEN '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "' AND '" + dateTimePicker2.Value.ToString("yyyy-MM-dd") + "' AND [type] LIKE '" + typea + "'" + "";
Не получается создать составной запрос где также из столбца moneyt считалась сумма, но добавилось бы условие, что брались только записи если в столбце другом было 0. И итог выводился бы в один датагрид.
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
17.07.2012, 16:55
1. насколько я понял сложность в создании условия фильтрации. я бы сделал небольшой класс-билдер который бы строил необходимую команду ... и везде вместо "однотипных" запросов использовал бы один и тот же запрос, который формирует один и тот же (возможно статический) класс/метод
2. почитайте еще про параметры для запроса.
0
1 / 1 / 3
Регистрация: 07.10.2011
Сообщений: 56
18.07.2012, 11:05  [ТС]
В принципе мне не сложно набить несколько запросов, главное вывести все это в один датагрид. В sql есть запрос "Union" который объединяет запросы select, но если я пишу в студии строку запроса включающий union? студия пишет ошибку, что не в курсе о нем. Или необходимо создавать готовую процедуру sql?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.07.2012, 11:05
Помогаю со студенческими работами здесь

Множественная выборка из одной таблицы
Сразу скажу: в программировании баз данных я еще середнячок. Не судите строго. Дано: база данных Access. В ней есть таблица: . ...

Несколько Однотипных Запросов
Пусть есть сайт и на нем десятка два страничек. Каждая из которых оптимизирована под свой запрос : 1. ноутбуки красивые 2. ноутбуки...

Объединение однотипных ajax запросов
Есть ряд кнопок на сайте, порядка 10-20, не важно. Проблема в том что для каждой кнопки используется своё действие и загрузка данных: ...

Множество однотипных таблиц и одна форма
Спасибо за внимание. Имеется 20 таблиц с одинаковой структурой,одинаковыми полями и одна форма. Как сделать, чтобы в форму выводились...

Дано три однотипных множества X1,X2,X3, состоящих из цифр. Вычислить множество X по правилу Y=(X1+X2)*(X1-X2)
Дано три однотипных множества X1,X2,X3, состоящих из цифр. Вычислить множество X по правилу Y=(X1+X2)*(X1-X2). Вычислить произведение цифр...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru