Конференция "Базы" » Можно ли создать такой запрос в SQL ADO Аccess
 
  • Разведка (02.09.13 10:52) [0]
    Есть 2 связанные таблицы
    1. работкики
       Петров
       Сидоров
       иванов
    2. выполненые работы

    Уточнять не буду, что к чему, но результат запроса должен вывести
    работников в одну строчку
    например:
    [дата] [Выполненные работы][Петров, Сидоров]
    [дата] [Выполненные работы][Иванов, Сидоров]
  • Разведка (02.09.13 10:59) [1]
    Я понимаю то ли дело Oracle все может, но ADO Аccess это же полный экстрим.
  • Ega23 © (02.09.13 11:13) [2]

    > Уточнять не буду, что к чему

    Объяснять не буду, что почему, но надо соединять.
  • Разведка (02.09.13 11:23) [3]

    > Ega23 ©   (02.09.13 11:13) [2]

    ух ты крутой ответ... респект
  • Разведка (02.09.13 11:25) [4]

    > Ega23 ©   (02.09.13 11:13) [2]


    Спасибо очень помогло, а то просто  тупил и не знал как сделать, а то просто супер способ .... пойду чайку налью..
  • Savek (02.09.13 13:25) [5]
    Конструктор запросов есть у аксеса, для снижения экстрима
  • Ega23 © (02.09.13 14:17) [6]

    > ух ты крутой ответ... респект


    А то.


    > Спасибо очень помогло


    Незачто, обращайтесь завсегда например.
  • Дмитрий (02.09.13 16:22) [7]
    конструктор запросов в Акйессе неплох, сам все нарисует
    там и разбирайся, как таблицы объединяются в sql-запросах
    хотя все это есть в книжках, хелпе
    и в основе  довольно просто
    тем более всего лишь для двух таблиц
  • Кщд (02.09.13 19:23) [8]
    >Дмитрий   (02.09.13 16:22) [7]
    не поняли вопрос?
    перечитайте
    речь не об объединении таблиц, а об агрегате над записями

    >Разведка   (02.09.13 10:52)
    google: access aggregate strings
  • Дмитрий (03.09.13 10:56) [9]
    вы имеете в виду объединение в одно поле работников и выполненные работы?
    >[дата] [Выполненные работы][Петров, Сидоров]

    полагаю, что такое агрегирование одним запросом сделать нельзя
    поскольку функция SUM() текстовые поля не складывает, а конкатенация в списке агрегатных функций отсутствует.
  • Дмитрий (03.09.13 11:07) [10]
    Можно извратиться и посредством ТРАНСФОРМ (перекрестного запроса) всех работников вытянуть в заголовки строк и потом сложить вторым запросом.
    Но сложить произвольные работы...
  • SQL ADO Access (03.09.13 11:32) [11]
    > результат запроса должен вывести
    > работников в одну строчку
    > например:
    > [дата] [Выполненные работы][Петров, Сидоров]
    > [дата] [Выполненные работы][Иванов, Сидоров]


    Дорогой , где у тебя в связанных таблицах [дата], по какому полю связь?
    Нет структуры ни таблицы "работники", ни таблицы "выполненные работы", а ты говоришь о каком-то SQL запросе.
    Если представишь структуры таблиц, возможно тебе и помогут с запросом ...
  • Ega23 © (03.09.13 11:48) [12]

    > полагаю, что такое агрегирование одним запросом сделать нельзя


    Можно сделать всё, вопрос в затратах.
  • Ega23 © (03.09.13 11:49) [13]

    > Дорогой , где у тебя в связанных таблицах [дата], по какому полю связь?
    > Нет структуры ни таблицы "работники", ни таблицы "выполненные работы", а ты говоришь о каком-то SQL запросе.
    > Если представишь структуры таблиц, возможно тебе и помогут с запросом ...


    Ну он же чётко написал, что уточнять не будет.
  • SQL ADO Access (03.09.13 11:52) [14]
    > Ega23 ©   (03.09.13 11:49) [13]
    Ну он же чётко написал, что уточнять не будет.

    Да уж ...
  • Дмитрий (03.09.13 12:57) [15]
    >Можно сделать всё, вопрос в затратах.

    Бессмысленная очевидность.
    Просветите меня, буду признателен, как рационально сложить строки в одну при группировке по дате таблицы.
    [Дата1][Описание работы1]
    [Дата1][Описание работы2]
    [Дата1][Описание работы3]
    [Дата2][Описание работы4]
    ...

    Чтобы в итоге получить
    [Дата1][Описание работы1 +Описание работы2+Описание работы3]
    [Дата2][Описание работы4]
  • Кщд (03.09.13 13:00) [16]
    >Дмитрий   (03.09.13 12:57) [15]
    начнёте гуглить или продолжите глупить?
  • Ega23 © (03.09.13 13:47) [17]
    Написать функцию, в чём проблема-то?
  • sniknik © (04.09.13 08:18) [18]
    > как рационально сложить
    рационально не складывать. а просто например "развернуть" таблицу/результат группировки с помощью операции pivot table.

    > Написать функцию, в чём проблема-то?
    нет в access(в смысле jet а не программе) функций... но в принципе можно "помучится" и обойтись стандартными (VB), наверное... но только смысл? сильно затратный запрос получится, если вообще получится.
  • Ega23 © (04.09.13 11:48) [19]

    > нет в access(в смысле jet а не программе) функций


    Да ладно????
  • Дмитрий (04.09.13 15:20) [20]
    развернуть с перекрестным запросом можно работников топикстартера
    развернуть работы таким образом можно только если они все стандартизованы и их не слишком много
    а это сомнительно

    Ega23
    и какую акцессную функцию вы предложите для агрегата по тексту в запросе?
    очевидно, что написать функцию, перебирающие все строки и формурующую список возможно
    только с практической точки зрения в этом нет смысла
    также и для топика это не решение
  • Ega23 © (04.09.13 17:12) [21]

    > только с практической точки зрения в этом нет смысла
    > также и для топика это не решение


    Ну поскольку поциэнт уточнять отказался, что тут решение, а что нет - это сложно прованговать. Но лично мой опыт подсказывает мне, что такая "хотелка" - в одном-двух местах проекта будет встречаться. А значит персональную функцию написать смысл имеет.
  • SQL ADO Access (04.09.13 17:14) [22]
    Разведка = Дмитрий
    ???
  • SQL ADO Access (04.09.13 17:14) [23]
    Тема давно "свернута" ...
  • sniknik © (04.09.13 18:04) [24]
    > Да ладно????
    да точно. формально есть процедуры... но, можно ли назвать процедурой инструкцию из 1 (одного!) запроса. функций нет вообще.
  • sniknik © (04.09.13 18:07) [25]
    + опять имеется ввиду jet, а не программа access (там вообще можно и MSSQL базу подключить, и естественно сразу поиметь и нормальные процедуры и функции...)
  • Дмитрий (06.09.13 18:47) [26]
    >SQL ADO Access   (04.09.13 17:14) [22]

    никак нет
    по сообщениям это должно быть ясно

    >Ega23 ©   (04.09.13 17:12) [21]
    >такая "хотелка" - в одном-двух местах проекта будет встречаться. А значит персональную функцию написать смысл имеет.

    озвученная хотелка не очень осмысленна
    а прописывать перебор и сложение всех значений вручную не комильфо
    прежде чем писать такую функцию лучше уточнить тз
  • Кщд (09.09.13 08:25) [27]
    >Дмитрий   (06.09.13 18:47) [26]
    >озвученная хотелка не очень осмысленна
    нормальное желание для отчетов
  • sniknik © (09.09.13 12:00) [28]
    для отчетов как раз делается транспонирование таблицы (pivot как то там), и это у access есть ([18]). но тут же желают объединенную строку с данными.
  • Кщд (09.09.13 13:20) [29]
    >sniknik ©   (09.09.13 12:00) [28]
    задачи транспонирования и создания агрегатного поля из строк(конкатенация с заданным разделителем) - разные задачи

    телепатирую, что ТС хочет получить список фамилий в одном поле, сгруппированный по дате и работе
    если это не так, то мильпардон
    если это так, то pivot - непричём
  • Кщд (09.09.13 13:23) [30]
    >Кщд   (09.09.13 13:20) [29]
    прОшу прощення, не дочитал "sniknik ©   (09.09.13 12:00) [28]"
  • Кщд (09.09.13 13:26) [31]
    ТС, судя по всему, желает: http://allenbrowne.com/func-concat.html
  • sniknik © (09.09.13 16:49) [32]
    > ТС, судя по всему, желает: http://allenbrowne.com/func-concat.html
    это только для access, "внутри" access, функцией sql это назвать трудно, и с ADO(jet, из Delphi) работать не будет.
    но вообще, по сути, да, он хочет этого, запросом. как написал.
  • Кщд (09.09.13 19:29) [33]
    >sniknik ©   (09.09.13 16:49) [32]
    >и с ADO(jet, из Delphi) работать не будет.
    каюсь, не знал
    спасибо
  • Smile (09.09.13 19:32) [34]
    Жаль, что в дискуссии не участвует старттопик.
    Не понятно, что мы осуждаем ..
  • ТимоховДА (27.09.13 01:03) [35]
    стартопику пох.
 
Конференция "Базы" » Можно ли создать такой запрос в SQL ADO Аccess
Есть новые Нет новых   [134430   +2][b:0.001][p:0.001]