Dupla válogatás egy táblán belül

Dupla válogatás egy táblán belül
2008-01-10T20:27:50+01:00
2008-01-30T12:38:27+01:00
2022-11-07T11:35:40+01:00
Laci_76
Sziasztok!

A következő a problémám: van két adattáblám. Az egyikben tárolom a bizonylatoknak a fejrészét(bizfej).
A következő táblában vannak letárolva a bizonylatnak a tételei (biztetel).
A probléma ott kezdődik, hogy a 'bizfej' tábla szerint leválogatott bizonylatokhoz hozzárendelem a
'biztetel' táblában található hozzá tartozó tételeket.
Ezek után még le kellene szürni azokat a tételeket is amelyek már szerepelnek egy másik mezőkapcsolat
alapján.
Pl.: Van a táblában a következő adatsorom:
ID Bizfejid cikkid mennyiseg biztetelid
25 5 5 4,2
26 5 6 5,1
27 5 7 1,0
28 6 5 2,1 25
29 6 7 1,0 27


A válogatás után a következőt szeretném látni:
ID Bizfejid cikkid mennyiseg
25 5 5 2,1
26 5 6 5,1

Segítségeteket előre is köszönöm.
Mutasd a teljes hozzászólást!
A táblát kapcsold össze saját magával:


select ...
tabla left join tabla b on tabla.id=b.biztetelid


Akkor egymás mellett (egy sorban) lesznek az összetartoók.

Még a végére tehetsz egy olyat, hogy
where b.biztetelin is not null és akkor eltünik a másik sor

És akkor úgy kb:
select tabla.ID, tabla.bizfej, tabla.cikkid, tabla.menniyseg-ifnull(b.mennyiseg,0) as mennyi from tabla left join tabla b on tabla.id=b.biztetelid and tabla.cikkid=b.cikkid where b.biztetelid is not null
Mutasd a teljes hozzászólást!

  • distinct nem segit? bár nem értem a példát :(
    :paw:
    Mutasd a teljes hozzászólást!
  • Egy kicsit összeugrott a táblázatom
    De mindjárt megpróbálom egy kicsit másképp, hátha jobb jessz:

    ID--Bizfejid--Cikkid--Mennyiseg--Biztetelid
    25--5---------5-------4,2
    26--5---------6-------5,1
    27--5---------7-------1,0
    28--6---------5-------2,1----------25
    29--6---------7-------1,0----------27

    És az eredmény amit látni szeretnék
    ID--Bizfejid--Cikkid--Mennyiseg
    25--5---------5-------2,1
    26--5---------6-------5,1

    Egy kicsit részletesebben:
    Cikkid 5 mennyiség ereménye úgy jön ki hogy összegzésnél
    a 25 id sor mennyiségéből kivonja a 28 sor mennyiségét és ezt
    adja eredményül. Ezt a kapcsolatot a 28 sor Biztetelid-t kapcsolja össze az ID-vel, és csak a fennmaradó részt mutatja az adott táblában.
    Mutasd a teljes hozzászólást!
  • A táblát kapcsold össze saját magával:


    select ...
    tabla left join tabla b on tabla.id=b.biztetelid


    Akkor egymás mellett (egy sorban) lesznek az összetartoók.

    Még a végére tehetsz egy olyat, hogy
    where b.biztetelin is not null és akkor eltünik a másik sor

    És akkor úgy kb:
    select tabla.ID, tabla.bizfej, tabla.cikkid, tabla.menniyseg-ifnull(b.mennyiseg,0) as mennyi from tabla left join tabla b on tabla.id=b.biztetelid and tabla.cikkid=b.cikkid where b.biztetelid is not null
    Mutasd a teljes hozzászólást!
  • Szia!

    Próbáld ki!

    SELECT alap.ID, alap.BIZFEJID, alap.CIKKID, alap.MENNYISEG - NVL(summa.summenny,0) FROM
    TABLA_ALAP alap
    LEFT JOIN
    (SELECT biztetelid, cikkid, sum(mennyiseg) summenny
    FROM TABLA_ALAP WHERE biztetelid IS NOT NULL
    GROUP BY biztetelid, cikkid) summa
    ON summa.biztetelid = alap.id AND summa.cikkid = alap.cikkid
    -- WHERE alap.biztetelid IS NOT NULL /*ha csak azt szeretnéd, amelyiknek van párja, de ezt lehet az INNER JOIN-nal is */
    -- ORDER BY ID

    De ha pontosan nem ezt akarod, írd meg, hogy mit szeretnél és küldöm.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd