Hirdetés

Új hozzászólás Aktív témák

  • nyunyu

    félisten

    válasz Taci #5314 üzenetére

    Valahogy meg lehet csinálni, hogy 1 cikk csak egyszer szerepeljen (ezt a distinct vagy a group by megoldja), és hogy a különböző kategóriák vesszővel elválasztva egy új mezőben legyenek az adott egy darab cikk rekordjában?

    Persze, ha a nézetben aggregálod a rekordokat valamilyen függvénnyel:

    Oracle alatt valahogy így nézne ki:
    create view cikkek_vw as
    select c.id cikk_id,
    c.cim cim,
    c.create_date datum,
    c.creator cikk_iro,
    listagg(ck.kategoria_id, ', ') within group (order by ck.kategoria_id) kategoria_id,
    listagg(k.nev, ', ') within group (order by ck.kategoria_id) kategoria_nev
    from cikkek c
    join cikk_kategoria ck
    on c.id = ck.cikk_id
    join kategoriak k
    on ck.kategoria_id = k.id
    group by c.id, c.cim, c.create_date, c.creator;

    listagg() függvény nem része az SQL szabványnak, nem tudom, a Te DB motorod alatt van-e hasonló aggregálási lehetőség, illetve milyen szintaxissal.
    (MySQL alatt GROUP_CONCAT, MS SQL alatt STRING_AGG)

    Ilyenkor a végére KELL a group by, mert az fogja megmondani, hogy milyen mezők alapján csoportosítsa/vonja össze a sok találatot egy-egy rekordba.
    within group (order by valami) meg azt mondja meg, hogy a vesszővel felsorolt elemek mi szerint legyenek sorbarakva.
    (gondolom IDnál és a névnél is ugyanazt a rendezést akarod használni :DDD )

Új hozzászólás Aktív témák