Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложный запрос с заменой данных / 7 сообщений из 7, страница 1 из 1
10.02.2014, 09:19:56
    #38555283
Сложный запрос с заменой данных
Доброго дня форумчане. Двух недельная попытка решить задачу всё таки заставила меня написать на форуме.

Задача: Есть Таблица с 3-мя столбцами 'kv' (квитанция, int(6) ), 'fio' (ФИО, varchar(50) ), 'sum' (сумма, int(5)).
Пример таблицы:
kvfiosum800001Иванов500800002Сидоров400800002Сидоров600800002Сидоров100800003Пупкин200800003Пупкин0800004Козлов1000
Необходимо получить таблицу в виде:
kvfiosumsum800001Иванов500500800002Сидоров400 Сидоров600 Сидоров1001100800003Пупкин200 Пупкин0200800004Козлов10001000
т.е необходимо убрать повторяющиеся квитанции ('kv'), и вывести столбец с суммой одинаковых квитанций.
Я решил задачу в Delphi, но мне необходима именно решить с помощью запроса.
Решение в Delphi:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
form1.ADOQuery1.First;


kv:=form1.ADOQuery1.FieldByName('n_kvitancia').AsInteger;
form1.ADOQuery1.Next;
while not (ADOquery1.Eof) do
	Begin
	if kv=form1.ADOQuery1.FieldByName('n_kvitancia').AsInteger then
		Begin
		kv:=form1.ADOQuery1.FieldByName('n_kvitancia').AsInteger;
		form1.DBGrid1.DataSource.DataSet.FieldByName('n_kvitancia').NewValue:=null;
		form1.DBGrid1.DataSource.DataSet.FieldByName('fio').NewValue:=null;
		form1.ADOQuery1.Next;
		end
	else
		Begin
		kv:=form1.ADOQuery1.FieldByName('n_kvitancia').AsInteger;
		form1.ADOQuery1.Next;
		end;
	end;
...
Рейтинг: 0 / 0
10.02.2014, 11:23:57
    #38555403
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный запрос с заменой данных
Это не задача работы с данными, это задача отображения данных.
Её должен решать не сервер БД, а клиент.
Единственное, чем сервер может помочь в этой задаче - это если использовать GROUP BY ... WITh ROLLUP, то он посчитает итоговые суммы.
...
Рейтинг: 0 / 0
10.02.2014, 11:42:48
    #38555425
Сложный запрос с заменой данных
Akina, а вообще теоретический возможно решить данную задачу именно через запрос?
...
Рейтинг: 0 / 0
10.02.2014, 11:56:21
    #38555446
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный запрос с заменой данных
Да. Но не надо этого делать. Именно по идеологическим мотивам.
...
Рейтинг: 0 / 0
10.02.2014, 12:19:51
    #38555487
Сложный запрос с заменой данных
Akina, идеологию того что нельзя быть быдлокодером я знаю, и идеологию того что нельзя решать задачи через проход что сзади. Но данную задачу мне надо решить именно через запрос.
...
Рейтинг: 0 / 0
10.02.2014, 15:06:06
    #38555784
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный запрос с заменой данных
Венер Нафиков ,

проблема в том, что в SQL нет понятия "номер строки"

Даже с обработкой в клиенте - без указания ORDER BY нет гарантии, что в результате select * from mytable данные каждый раз будут в одинаковом порядке.
Поэтому в том виде, как вы указали - такой возможности в SQL нет в принципе.

Вот тяжеловесный вариант решения с использованием временной таблицы, но все же - построение аналитических отчетов - дело клиента, а не SQL-сервера.
...
Рейтинг: 0 / 0
11.02.2014, 06:13:34
    #38556554
Сложный запрос с заменой данных
Cygapb-007, Спасибо тебе большое. Я чуть переделал твой запрос и он как раз подошел для меня
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложный запрос с заменой данных / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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