|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.07.2010, 08:06 | #1 |
Пользователь
Регистрация: 18.03.2010
Сообщений: 88
|
Сцепить в одно поле
Добрый день!
Подскажите как в SQL запросе собрать данные при группировке в одно поле. К примеру, есть таблица с двумя полями FIO и DATE. Группируя по FIO нужно чтобы даты сцепились в одно поле по каждому FIO. Вообще мне нужно следующее: К примеру Петров приходил на работу 01.01.2010, 04.01.2010 и 10.01.2010, мне нужно сгруппировать по FIO и чтобы даты сцепились в одну ячейку, то еть при группировке у Петрова в ячейке DATE мне нужно чтобы было "01.01.2010 04.01.2010 10.01.2010", а ещё лучше "01.01.2010 и 04.01.2010 и 10.01.2010". Запрос в delphi, база данных access. Последний раз редактировалось AK BULLETS; 14.07.2010 в 08:15. |
14.07.2010, 09:22 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
если я правильно понял, то подобные задачи решаются
либо использованием кода на сервере (хранимые процедуры/функции) либо прямо на клиенте. Общий принцип одинаков - запрос получаем с нужным порядком записей (order by), потом в цикле идём по записям, и, пока выполняется условие, собираем их в одну строчку. Если условие изменилось - сохраняем строчку в таблицу (или, в случае функций БД - возвращаем результат). p.s. побольше конкретики - структура таблиц, цель сбора, пример кода с запросом на Delphi... вот тогда, может быть, Вы получите конкретный код решения. |
14.07.2010, 09:43 | #3 |
Пользователь
Регистрация: 18.03.2010
Сообщений: 88
|
Конекретнее.
Есть таблица "PRIHOD" с полями FIO и DATE, со значенифями: Петров | 01.01.2010 Петров | 04.01.2010 Петров | 10.01.2010 Иванов | 03.01.2010 Иванов | 15.01.2010 Запрос: select FIO, last(DATE) as DATE from PRIHOD GROUP BY FIO Но в этом случае я получу последнее значение из DATE: Петров | 10.01.2010 Иванов | 15.01.2010 А как получить объекдинение значений в DATE при группировке по FIO: Петров | 01.01.2010 04.01.2010 10.01.2010 Иванов | 03.01.2010 15.01.2010 Вот в общем то вопрос. |
14.07.2010, 09:52 | #4 |
Форумчанин
Регистрация: 13.07.2010
Сообщений: 346
|
сервер БД какой?
Non est culpa vin, sed culpa bibentis
|
14.07.2010, 09:55 | #5 |
Пользователь
Регистрация: 18.03.2010
Сообщений: 88
|
База данных ACCESS
|
14.07.2010, 09:58 | #6 |
Форумчанин
Регистрация: 13.07.2010
Сообщений: 346
|
IMHO только программно, предлагаю отображать в виде 2х таблиц
в одном список фамилий в другом даты
Non est culpa vin, sed culpa bibentis
|
16.07.2010, 10:53 | #7 |
Пользователь
Регистрация: 04.06.2010
Сообщений: 25
|
Если это касается вывода данных одной строкой а не по каждому сотруднику в таблице, то можно было бы сделать:
из запроса типа Select FIO, DATE from Table where FIO = :ID И по нажтии на кнопу выводить в поля данные... var i as integer; begin SQL.open; SQL.first; DBEdit1.value:=SQL.FIO.value; for i:=1 to SQL.recordcount.value do begin DBEdit2.value:=DBEdit2.value+', '+DateToString(SQL.DATE.value); SQL.next; end; |
16.07.2010, 11:07 | #8 | |
Форумчанин
Регистрация: 13.07.2010
Сообщений: 346
|
Цитата:
и поставить данный код в компонент (Master)DataSource, в событие OnDataChange Код:
Non est culpa vin, sed culpa bibentis
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как в QRepopt отображать одно и тоже поле в нескольких колонках? | Milishka | БД в Delphi | 2 | 19.04.2010 14:37 |
Сцепить и убрать повторы | Иванов_ДМ | Microsoft Office Excel | 6 | 17.09.2009 14:03 |
Данные из двух полей исх. таблицы в одно поле сводной таблицы | Strelec79 | Microsoft Office Excel | 2 | 02.08.2009 13:59 |
После ввода в поле по Enter нужно перейти на другое поле! | •ScReam•™ | Помощь студентам | 2 | 16.06.2009 08:47 |
Одно поле StringField в DataView в Rave. Как добавить еще? | Leser | Помощь студентам | 1 | 06.10.2008 15:00 |