2016-01-25 4 views
-6

Три столба стол; ID, TERM, SYNONYMsql внутреннее соединение один стол

1, IDENTITY, CHARACTER 
2, IDENTITY, EXISTENCE 
3, IDENTITY, IDENTIFICATION 
4, IDENTITY, INTEGRITY 
5, IDENTITY, NAME 
6, CIRCUMSTANCES, ASSETS 
7, CIRCUMSTANCES, CAPITAL 
8, CIRCUMSTANCES, CHANCES 

мне нужна результат, чтобы вернуться отчетливым «термин» с соответствующим «синонимом (ы)» устранения многих ко многим и вернуть один ко многим, как результат.

1, IDENTITY, CHARACTER | EXISTENCE | IDENTIFICATION | INTEGRITY | NAME 
6, CIRCUMSTANCES, ASSETS |CAPITAL | CHANCES 

Или

1, TERM = "ИДЕНТИФИКАЦИЯ" СИНОНИМ = "СИМВОЛЫ" СИНОНИМ = "СУЩЕСТВОВАНИЕ" СИНОНИМ = "ОБОЗНАЧЕНИЕ" СИНОНИМ = "Целостность" СИНОНИМ = "ИМЯ"

2 , TERM = "ОБСТОЯТЕЛЬСТВО" синоним = "АКТИВ" синоним = "КАПИТАЛ" синоним = "ШАНСЫ"

+2

Просьба уточнить ваш вопрос. – dan08

+2

http://stackoverflow.com/help/how-to-ask – Sebas

+3

который rdbms пожалуйста? – muratgu

ответ

1

Если вы используете MySQL, вы можете использовать GROUP_CONCAT

SELECT MIN(`ID`), `TERM`, GROUP_CONCAT(`SYNONYM`, ' | ') 
FROM my_table 
GROUP BY `TERM`; 
+0

Спасибо за сообщение.GROUP_CONCAT не признано – keydrive

0

Oracle решение - начиная с 11g:

with sample as 
(
    select 1 ID, 'IDENTITY' term , 'CHARACTER' syn from dual 
    union all 
    select 2, 'IDENTITY', 'EXISTENCE' from dual 
    union all 
    select 3, 'IDENTITY', 'IDENTIFICATION' from dual 
    union all 
    select 4, 'IDENTITY', 'INTEGRITY' from dual 
    union all 
    select 5, 'IDENTITY', 'NAME' from dual 
    union all 
    select 6, 'CIRCUMSTANCES', 'ASSETS' from dual 
    union all 
    select 7, 'CIRCUMSTANCES', 'CAPITAL' from dual 
    union all 
    select 8, 'CIRCUMSTANCES', 'CHANCES' from dual 
) 
select min(id) id, term, 
listagg(syn,'|') within group(order by syn) syns 
from sample 
group by term; 

Выход:

 ID TERM   SYNS 
---------- ------------- ------------------------------------------------------ 
     6 CIRCUMSTANCES ASSETS|CAPITAL|CHANCES 
     1 IDENTITY  CHARACTER|EXISTENCE|IDENTIFICATION|INTEGRITY|NAME 
+0

Это против DB2 и не нравится WITHIN, но теперь у меня хорошая картина и буду работать через нее. Благодаря! – keydrive

Смежные вопросы