Jakub Panas

Jakub Panas Konsultant
techniczny,
IPR-Insights

Temat: tabela podrzędna jako lista

Witam,
mam dwie tabele:
produkt:
ID Nazwa
1 nazwa1
2 nazwa2

skladnik:
ID_prod nazwa_skl ilosc
1 skl1 10
1 skl2 20
2 skl2 5
2 skl3 7
2 skl4 15

Czy da się stworzyć pojedyncze zapytanie, tak aby w wyniku uzyskać nazwę produktu i listę wszystkich jego składników w pojedynczym wierszu (deliminatory dowolne, mogą się powtarzać):
nazwa1, skl1; skl2
nazwa2, skl2; skl3; skl4

Potrafię to zrobić tak, że tworzę tabelę tymczasową, uzupełniam danymi z produktu a potem wywołuję procedurę, która uzupełnia listę składając ją z kolejnych kawałków.
Ale tę procedurę musiałbym napisać ponownie dla jednorazowego zapytania, więc szukam prostszego sposobu.

konto usunięte

Temat: tabela podrzędna jako lista

Można wykorzystać funkcje XML (dostępne od 9.1) w następujący sposób:

select p.nazwa, s.lista from produkt p, (select id_prod, rtrim(replace(replace(xmlserialize(xmlagg(xmlelement(name "x", nazwa_skl)) as varchar(1000)),'<x>',''),'</x>',';'),';') as lista from skladnik group by id_prod) s where p.id=s.id_prod


W chwili obecnej lepszej funkcji grupowania nie ma :)

Pozdrawiam,
Marcin

Następna dyskusja:

Szukam pracy jako Grafik (K...




Wyślij zaproszenie do