Сложный SQL-запрос для извлечения определенных строк из таблицы - PullRequest
1 голос
/ 21 сентября 2011

У меня есть 2 таблицы emp и emp_desc

В таблице emp есть столбцы empid, empname, eempaddress

В таблице emp_desc есть столбцы empid, empdescseqno, empdesc (для одного empid у нас есть несколько empdesc - оно не фиксировано)

Таблица 1

empid  ename   eaddress
 1      ABS      PPPPPP
 2      DSC      CCCCC

Таблица 2

empid  empdescseqno  empdesc
  1      1              JJJJJ
  1      2              KKKKKK
  1      3              LLLLLL
  2      1              MMMMMM
  2      2              NNNNNN

Я хочу получить empid,empname и empdesc, соединяющие две таблицы.Однако в результирующей таблице все empdesc, соответствующие одному сотруднику, должны быть объединены в одну строку.

То есть результат должен выглядеть примерно так:

empid    empname    empdesc
  1       ABS        JJJJJ KKKKKK LLLLLL
  2       DSC        MMMMMM NNNNNN

Мне нужнонапишите обобщенный запрос SELECT, приведший к финальной таблице выше.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2011

Воспроизведение ответа Маянка здесь, поскольку он сохранил его в комментариях

select e.empid, substr( xmlserialize( xmlagg( xmltext( concat( ', ', empdesc ) ) ) as varchar( 1024 ) ), 3 ) from empdesc desc , emp e where e.empid =desc.empid group by e.empid

Спасибо Дэну за указание на старую ссылку.

0 голосов
/ 21 сентября 2011

ЕСЛИ вы используете базу данных MYSQL, то можете использовать этот запрос.

SELECT empid, ename, GROUP_CONCAT(empdesc ORDER BY empdescseqno SEPARATOR ' ') as empdesc FROM employee emp 
INNER JOIN employee_map emp_map ON emp.empid = emp_map.empid 
GROUP BY emp.empid;

Это даст результат, как вы хотите.

Я думаю, что вы хотите его для DB2, тогда вам нужнонайти альтернативные функции в DB2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...