Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2018, 01:12   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию SQL - Помогите склеить 2 запроса, если можно

Доброе время суток,
Использую FireBird 3.0
Есть рабочий запрос:

Код:
select p.*, pr.NUMBER_IN as NUMBER_IN_PR, c.EXECUTE_BEGIN as EXECUTE_BEGIN_C, c.EXECUTE_END as EXECUTE_END_C, c.CLIENT_ID as CLIENT_ID_C,
  c.PDV as PDV_C, c.PDV_WITHOUT as PDV_WITHOUT_C, c.PDV_TOTAL as PDV_TOTAL_C, c.FIRST_PART_NUMBER_CONTRACT as FIRST_PART_NUMBER_CONTRACT_C,
  c.CREATE_NUMBER as CREATE_NUMBER_C from PLAN_D p join CONTRACT c on p.CONTRACT_ID = c.ID join PROPOSAL pr on pr.ID = c.PROPOSAL_ID where c.SEND_STATUS = 1 and p.ARCHIVE = 1 order by p.ID
он выдает строки результата.
К каждой строке этого результата желательно прикрепить еще один запрос:

Код:
select distinct(sw.NAME_SORT_WORK) from DEVICES d
  join SORT_WORK sw on d.SORT_WORK_ID = sw.ID where d.PROPOSAL_ID = 1
результатом этого запроса, также могут стать несколько строк.
Мне нужно результат второго запроса превратить в строку (перечисление через запятую), и вставить в новое поле первого запроса. Ключевое поле объединения = "PROPOSAL_ID" (которое есть и в таблице "CONTRACT" и в таблице "DEVICES")

Заранее спасибо за ответ
P.S.
или тут без внутренней процедуры не обойтись?
KBO вне форума Ответить с цитированием
Старый 11.11.2018, 02:07   #2
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

нашел, что второй запрос можно написать так:

Код:
select list(distinct(sw.NAME_SORT_WORK), ', ') from DEVICES d join SORT_WORK sw on d.SORT_WORK_ID = sw.ID where d.PROPOSAL_ID = 1
и теперь его результат осталось объединить с результатом первого запроса по полю "PROPOSAL_ID" но как?
KBO вне форума Ответить с цитированием
Старый 12.11.2018, 09:27   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
и теперь его результат осталось объединить с результатом первого запроса по полю "PROPOSAL_ID" но как?
1. второй запрос для ВСЕХ возможных(имеющихся) proposal_id
Код:
select proposal_id, list(...)
from ...
 group by proposal_id
2. а теперь можно просто объединить два подзапроса
Код:
select ....
from ( --первый запрос
           select ....
      ) as first
left join ( --второй запрос
              select ...
           ) as second on second.proposal_id =first.proposal_id
2.1. можно к первому запросу присоединить подзапрос
select ...
from ...
left join ( --второй запрос как подзапрос
select ...
) as second on ???.proposal_id =second.proposal_id
??? --где (в какой таблице) в первом запросе есть это поле proposal_id
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите,полностью решение,если можно ksN` Паскаль, Turbo Pascal, PascalABC.NET 1 24.01.2018 18:07
Помогите пожалуйста решить ассемблер, если можно с комментариями. Светлана55 Помощь студентам 1 17.11.2017 09:14
Помогите глупой мне))) С формой если можно) KatarinaDe Lazarus, Free Pascal, CodeTyphon 4 11.11.2015 09:21
Эпоксида. Можно склеить наушники (скрин внутри). Ни разу не пользовался. TwiX Свободное общение 7 14.11.2011 01:41
Помогите с запросом SQL. Ошибка синтаксиса в выражении запроса. ZiG24RUS Microsoft Office Access 1 19.05.2009 06:29