2015-10-10 2 views
1

У меня есть 2 стола. во-первых, таблица элемент с колоннами:Конкатентные детские предметы в колонке по id

itemId|itemNumber|description 
1  abc  xxxx 
2  def  xxxx 
3  hij  xxxx 

Тогда у меня есть таблица подпозиция с колоннами:

parentItemId|childItemId 
1   2 
2   3 
1   3 
3   2 
3   1 

Im пытается выбрать список itemNumbers со списком дочерних itemNumbers сцепленных в 3-й колонки следующим образом: результаты:

ItemNumber|description|childItemNumber1, childItemNumber2, childItemNumber3... 
abc  xxxx  def,hij 
def  xxxx  hij 
hij  xxxx  def,abc 

поэтому мне нужно искать номера позиций для родительских отношений ребенка в первой таблице, прежде чем конкатенация им.

ив пытался что-то вроде этого:

SELECT c.itemNumber, c.description, GROUPBY_CONCAT(SELECT a.itemNumber from Item as a inner join SubItem as b on a.itemId = b.childItemId where a.Itemid = b.parentItemId) FROM Item as c WHERE 1 

, но я даже не думаю, что его близко

+0

Редактировать свой вопрос и предоставить образцы данных и желаемые результаты. Также может помочь SQL-скрипт. –

ответ

1

Это требует два соединения и агрегация:

select p.itemNumber, p.description, 
     GROUP_CONCAT(ci.description) as children 
from Item p left join 
    SubItem s 
    on p.itemId = s.parentItemId left join 
    Item ci 
    ON s.childItemId = ci.ItemId 
group by p.ItemId; 

подзапросов не нужны.

+0

нет s.itemnumber только s.parentid и s.childid, то есть сложная часть. – user1336827

+0

@ пользователь1336827. , , Примеры данных значительно разъясняют вашу проблему. Я изменил ответ. –

+0

Это близко Я думаю, если вы закончите второе включение и измените ci.description на номер ci.item. Но у всех детей такой же номер позиции, что и исходный номер статьи – user1336827

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