1

Temat: łączenie wierszy

2

Odp: łączenie wierszy

W sumie nie wiem dokładnie co ma robić to zapytanie, ale żeby połączyć opisy dla tych samych id używasz zapytanie zagnieżdżonego z array_to_string(array(...))

select distinct
        p.id_produktu
        p.id_zamowienia
        p.nazwa
        p.cena
        p.stan
        count(*) as "Ilość pozycji",
        max(p.data_dot) as ostatnia_data_dodania,
        array_to_string(array(select opis from opisy o2 where o2.id_produktu=o.id_produktu),'-') opisy
from    produkty p,
        opisy o

where p.id_produktu=o.id_produktu
and p.data_dot between '2010-03-01' and '2010-06-30 23:59:59'

group by 1,2,3,4,5,8
having month(max(p.data_dot))=3
order by 3,4

a jak masz nowszego postgresa, >=8.4 to możesz zamiast tego potworka array_to_string(array(...)) użyć po prostu

array_to_string(array_agg(o.opis),' - '))

3

Odp: łączenie wierszy

ver. niestety 8.2
dzieki za podpowiedź ale niestety przy uzyciu "potworka" rekordy wyświetlily sie w dwoch wierszach dla identycznych id_produktu, nie polaczyly sie w kolumnie opis gdy id_produktu jest rozne.
Czy w takim przypadku jest to mozliwe?
Kolego masz może jakes inne rozwiazanie?
oczywiscie dodalem

array_to_string(array(select opis from opisy o2 where o2.id_produktu=o.id_produktu),'-') as opisy

jeszcze raz wielkie dzieki za pomysl. Bede cos jeszcze myslal ale sprawa watpliwa abym rozwiazal
pozdrawiam bardzo serdecznie

4

Odp: łączenie wierszy

No to musisz sprecyzować kiedy mają się łączyć opisy, myślałem że dla identycznych id_produktu.
Wszystko prawdopodobnie sprowadzi się do tego aby odpowiednio dodać warunek do 'zapytania z potworka'.