Hirdetés

Keresés

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

  • Taci

    addikt

    válasz nyunyu #5312 üzenetére

    Köszönöm szépen, ezzel így már szépen alakul.

    Viszont még lenne benne csavar:

    3 tábla van (példád alapján írom):
    - 1.: cikkek (c.cim, c.create_date stb.)
    - 2.: kategoria (k.id, k.nev)
    - 3.: cikkek_kategoriak (ck.cikk_id, ck.kategoria_id): Mivel egy cikk több kategóriában is lehet, ezért javaslatotokra ezt külön szedtem ebbe a táblába, így minden rekord 1-1 kapcsolat a cikk és a kategória között. Ha egy cikkhez 3 kategória tartozik, akkor 3 rekord van hozzá.

    Amit írtál, az szépen visszaadja a kért adatokat, de csak a kategóriák id-ját, és ha egy cikkhez több kategória van, akkor annyi rekordot ad vissza.
    Pl.: ha a cikk_id = 5 -höz van kategória 3, 15 és 22, akkor így adja most vissza:
    cikk_id    ...   kategoria_id
    5                3
    5                15
    5                22

    Viszont úgy szeretném, hogy cikkenként csak egy rekordot adjon vissza, és a kategoria_id-khoz tartozó szringeket (neveket) sorolja fel, vesszővel elválasztva.
    Tehát ha a 3-as kategória a "belfold", a 15-ös a "kulfold", a 22-es pedig a "sport", akkor ezt adja vissza:
    cikk_id     ...     kategoria_nevek
    5                  belfold,kulfold,sport

    Eddig arra jutottam, hogy:
    create view cikkek_vw as
    select c.id cikk_id,
           c.cim cim,
           c.create_date datum,
           c.creator cikk_iro,
           ck.kategoria_id cikk_kategoria_id,
           k.nev kategoria_nev
    from cikkek c
    join cikk_kategoria ck
      on c.id = ck.cikk_id
    JOIN kategoriak AS k
    ON ck.kategoria_id = k.id;

    (Lehet, ide most nem a legpontosabban írtam át, de a lényege ez, és nálam a valós kód szépen hozza.)

    Tehát ez kiírja több rekordban, ha egy cikkhez több kategória is van, viszont így már odaírja a kategória nevét is, nem csak az id-ját.
    cikk_id     ...     kategoria_id     kategoria_nev
    5                   3                belfold
    5                  15               kulfold
    5                   22               sport

    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?
    Mert ez így valóban egy az egyben az lenne, mint a mostani külön tábla tartalma.

    @Ispy: Már megvolt, a sokadik is, már a ló túloldalon vagyok lassan... :DDD

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