powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / группировка DataTable или SQL запрос к DataTable
25 сообщений из 40, страница 1 из 2
группировка DataTable или SQL запрос к DataTable
    #35812346
Pek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pek
Гость
Подскажите чайнику куда двигаться.

В 1С есть такая штука МояТаблица.Группировать("КолонкаГруппировки", "КолонкаДанных")
Получаешь в результате таблицу с итогами по колонке(ам) группироки.

А можно ли что-то подобное сделать в C# с DataTable?

Насколько я понимаю SQL запрос (или что-то в этом роде) к DataTable сделать нельзя?

Уж очень не хочеться тупым перебором строк итоги считать.

Спасибо
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35812748
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все можно. Главное - забыть про 1Ц и не считать этот "хашавшевет" эталоном. К датасетам можно применять Filter.
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35812761
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PekУж очень не хочеться тупым перебором строк итоги считать.Pek, а вам известно про функции SQL? В частности, про SUM?
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35812923
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] {
    new DataColumn("Value")
});

dt.Rows.Add("sql.ru");
dt.Rows.Add("delphikingdom.ru");
dt.Rows.Add("google.ru");
dt.Rows.Add("sql.ru");

var group = dt.AsEnumerable()
    .GroupBy(d => d["Value"])
    .Select(d => new { Value = d.Key, Count = d.Count() }
);

dataGridView1.DataSource = group.ToList();
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814582
Pek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pek
Гость
i see,

Про функции SQL я знаю.
Дело в том что мне нужно результаты пяти-шести SQL запросов к базе данных объеденить в одной таблице.
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814595
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во-первых обратите там внимание на AGGREGATES

Pekобъеденить в одной таблице.
во вторых может все таки делать это на сервере?

или просто запрос написать не можете? скажите - в чем сложность, могет поможем :)
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814629
Быдло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ в сандалиях
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] {
    new DataColumn("Value")
});

dt.Rows.Add("sql.ru");
dt.Rows.Add("delphikingdom.ru");
dt.Rows.Add("google.ru");
dt.Rows.Add("sql.ru");

var group = dt.AsEnumerable()
    .GroupBy(d => d["Value"])
    .Select(d => new { Value = d.Key, Count = d.Count() }
);

dataGridView1.DataSource = group.ToList();


МСУ, это LiNQ ?

Просто я никогда не видел её в действии.
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814741
Pek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pek
Гость
winsky!,

Да не то что-бы большие сложности были. Просто прикидываю и так и эдак; как лучше сделать.

Кстати вопрос: что быстрее, один громоздкий SQL запрос в базу данных или несколько маленьких попроще и последующей развлечение с DataTable-ами?

Кстати не надо на 1С бочку катить :) - весьма уважаемая (мной) программа.
Видели бы вы в чем они тут в Канаде работают, такое г... (по крайней мере с точки зрения интерфейса).
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814748
PekКстати вопрос: что быстрее, один громоздкий SQL запрос в базу данных или несколько маленьких попроще и последующей развлечение с DataTable-ами?
один
PekКстати не надо на 1С бочку катить :) - весьма уважаемая (мной) программа.
Не программа, а платформа. по крайней мере они так её называют

PekВидели бы вы в чем они тут в Канаде работают, такое г... (по крайней мере с точки зрения интерфейса).
Зато у них есть кленовый сироп
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814773
Pek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pek
Гость
winsky!,

Ну ладно, излагаю вводную :)

Имеется база данных (AS400).
У меня к ней доступ на чтение либо через OLE-драйвер либо через ODBC-драйвер.
Не знаю какой быстрее, пользуюсь OLE т.к. в строке подключения там можно IP сервера указывать.
А ODBC драйвер требует имя источника данных, а они на разных компах могут по разному обзываться.

Имеется таблица с данными бух.итогов. Колонки которые нам нужны:

Фирма (100, 101, 102, ... и т.д.)
БухСчет (1001, 1002, 1003, ... и т.д.),
ГодИтогов (2006, 2007, ... и т.д.),
МесяцИтогов (от 1 до 12),
СуммаДеб (положительное число; итоговые обороты по дебету счета за месяц года),
СуммаКред (отрицательное число; итоговые обороты по кредиту счета за месяц года).

Итоги на начало периодов система хранит в извращенной форме для разных фирм по разному.

Их может не быть вообще для некоторых фирм.
Тогда чтобы узнать итоги на начало 2008 года 11 месяца
нужно сложить СуммаДеб и СуммаКред за все периоды где Год<2008 и за все периоды где Год=2008 и Месяц<11.

А если они есть, то храняться в той же таблице, но Месяц=0.
Т.е. если Год=2007 и Месяц=0 то сложив СуммаДеб и СуммаКред мы получим итоги на начало 2007 года.

Т.е. для фирмы 100 итоги могут быть посчитаны на начало 2007 года, для фирмы 200 на начало 2003 года, для фирмы 300 их нет вообще.
Власти над процессом расчета итогов я не имею.

Теперь нужен отчет:
для одной заданой фирмы для одного выбранного года и месяца нужно получит следующее:

бухСчет ВыбраныйМесяц СледМесяц

1000 ОстНаКонецМес ОстНаКонецМес
1001 ОстНаКонецМес ОстНаКонецМес
1002 ОстНаКонецМес ОстНаКонецМес
...
подитог: Итого Итого

2001 ОборотЗаМесяц ОборотЗаМесяц
2002 ОборотЗаМесяц ОборотЗаМесяц
2003 ОборотЗаМесяц ОборотЗаМесяц
...
подитог: Итого Итого

Вот сижу и думаю как лучше сделать.
На выполнение пяти запросов ушло 1 час 10 минут:
- найти были ли посчитаны итоги на начало периода и если да то получить год и месяц;
- посчитать итоги на начало Года выбранного месяца;
- посчитать обороты с начала Года выбр.месяца до месяца предшеств.выбранному месяцу;
- посчитать обороты за выбр.месяц;
- посчитать обороты за след.месяц;

Подскажите в общих чертах как лучше сделать кто может?
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814775
&lt;fukfyl&gt;pth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PekНу ладно, излагаю вводную :)
не правильно ставится задача!
Надо так:
PekНу ладно, излагаю вводную, 400$ :)
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814787
Pek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pek
Гость
<fukfyl>pth,

Эй, про финансовый кризис кто нибудь слышал? :)
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814789
&lt;fukfyl&gt;pth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ладно:
PekНу ладно, излагаю вводную, 250$ :)[/quot]
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814793
Pek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pek
Гость
И еще вопрос.

В 1С есть СтрокаСостояние("пишу чего хочу") и внизу окошка 1С отображается это сообщение.

А в C# есть чего нибудь подобное?
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814795
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PekА в C# есть чего нибудь подобное?Да куда СиШарпу до 1Ц
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814798
PekВ 1С есть СтрокаСостояние("пишу чего хочу") и внизу окошка 1С отображается это сообщение.
никогда не признавал в 1С это русскоподобное именование членов, функций, операторов


намного приятнее созерцать StatusString("пиши исчо");
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814800
МСУ фпечке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PekДело в том что мне нужно результаты пяти-шести SQL запросов к базе данных объеденить в одной таблице.
Ну так и пишите в названии сабжа. При чем тут "группировка DataTable"?
Что мешает написать запрос к серверу на выборку нужных данных?

Либо, сджойнить уже готовые наборы на клиенте. А-ля:

Код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
DataSet ds = new DataSet();
ds.ReadXml(@"C:\sql.ru.xml");

var life =
    from links in ds.Tables["Links"].AsEnumerable()
    join members in ds.Tables["Members"].AsEnumerable() on links["MemberId"] equals members["MemberId"]
    join karma in ds.Tables["Karma"].AsEnumerable() on links["KarmaId"] equals karma["KarmaId"]
    select new { MemberName = members["MemberName"], KarmaTitle = karma["KarmaTitle"] };

dataGridView1.DataSource = life.ToList();
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814814
Буква У
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PekА ODBC драйвер требует имя источника данных, а они на разных компах могут по разному обзываться.

Неправда.
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814819
Pek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pek
Гость
i see,

Для каждой работы нужен соответствующий инструмент.

Конечная цель - поднять бабла побольше.

И на 1С я уж поимел гораздо больше чем мог бы поднять (в данных обстоятельствах) на C#, C++, Ассемблере,... (нужное подставить).

За что 1С бесконечно благодарен :)

Просто тогда у меня был один tool, сейчас другой...
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814830
Pek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pek
Гость
Буква У,

Вот connectionString я использую (может я чего не догоняю):

else if (myFactory == "System.Data.OleDb.OleDbFactory")
{
Csb.Add("Provider", "MYPROVIDERNAME");
Csb.Add("Data Source", "191.22.21.10");
Csb.Add("User Id", "myID");
Csb.Add("Password", "myPswd");
Csb.Add("Default Collection", "MYCOLLECTIONNAME");
}
else if (myFactory == "System.Data.Odbc.OdbcFactory")
{
Csb.Add("Dsn", "SOURCENAME");
Csb.Add("UID", "myID");
Csb.Add("PWD", "myPswd");
}

если я пытаюсь в ODBC засунуть IP сервера вместо имени источника данных то он меня нафиг посылает

может это от драйвера зависит?

и кстати, есть ли разница по скорости между OLE и ODBC?
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814834
Pek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pek
Гость
МСУ фпечкеPekДело в том что мне нужно результаты пяти-шести SQL запросов к базе данных объеденить в одной таблице.
Ну так и пишите в названии сабжа. При чем тут "группировка DataTable"?
Что мешает написать запрос к серверу на выборку нужных данных?

Либо, сджойнить уже готовые наборы на клиенте. А-ля:

+
Код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
DataSet ds = new DataSet();
ds.ReadXml(@"C:\sql.ru.xml");

var life =
    from links in ds.Tables["Links"].AsEnumerable()
    join members in ds.Tables["Members"].AsEnumerable() on links["MemberId"] equals members["MemberId"]
    join karma in ds.Tables["Karma"].AsEnumerable() on links["KarmaId"] equals karma["KarmaId"]
    select new { MemberName = members["MemberName"], KarmaTitle = karma["KarmaTitle"] };

dataGridView1.DataSource = life.ToList();



Дык сабж такой потому что мне нужно узнать - можно или нельзя группировать DataTable
а не "помогите написать мега-SQL-запрос".

Я ж чайник. Я просто вижу чего мне нужно получить на выходе, вижу какая структура данных и пытаюсь с наименьшими затратами и наибольшей унифицированостью сделать tool.
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814838
Буква Й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pekи кстати, есть ли разница по скорости между OLE и ODBC?
OLEDB круче

ODBC - багоплодилка
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814841
Pek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pek
Гость
Буква ЙPekи кстати, есть ли разница по скорости между OLE и ODBC?
OLEDB круче

ODBC - багоплодилка

Ну вот, если так то мне тогда и заморачиваться нечего.
OLEDB IP сервера понимает, мне больше ничего и не надо. :-)
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814847
МСУ фпечке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PekДык сабж такой потому что мне нужно узнать - можно или нельзя группировать DataTable
а не "помогите написать мега-SQL-запрос".
Я же Вам уже ответил - можно. Вы, вообще, читаете ответы, которые Вам адресованы?

Pekсделать tool.
Шо за зверь?
...
Рейтинг: 0 / 0
группировка DataTable или SQL запрос к DataTable
    #35814857
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pek
Я ж чайник. Я просто вижу чего мне нужно получить на выходе, вижу какая структура данных и пытаюсь с наименьшими затратами и наибольшей унифицированостью сделать tool.
Наймите специалиста.
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / группировка DataTable или SQL запрос к DataTable
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]