Hirdetés

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

  • SUPREME7

    őstag

    Sziasztok, picit megrekedtem az SQL tudásommal :) Volna 2 tábla, egyikben termékek vannak, vonalkód és áruház és az ára. A másik egy LOG, ha változik egy vonalkód ára az adott áruházban akkor mentődik.

    Az lenne a lekérdezés lényege, hogy listázzam az összes terméket az első táblából, és ha van hozzá tartozó log, akkor azt is, de abból is csak a legutolsót az adott áruház-vonalkód alapján.

    Itt lenne a minta amit tovább kellene vinnem:

    https://www.db-fiddle.com/f/unix3VPHaQTSD3GCjf58zA/3

    És az lenne a cél, hogy ezt kapjam vissza, ugyebár minden áruház csak egyszer szerepeljen és csak a legutolsó log adatai legyenek mellette, amihez pedig nincs log, ott NULL-t adjon vissza:

    vonalkod | aruhaz | ar | valtozas_datum | regiar
    59900444 | Budapest | 33000 | 2017-10-03 12:00 | 87000
    59900444 | Szeged | 44000 | 2017-10-05 10:00 | 660000
    59900444 | Pécs | 55000 | NULL | NULL

    A gondom az, hogy ha leszűröm azzal, hogy GROUP BY termek.aruhaz akkor ugyan visszakapom nagyjából azt amit szeretnék, de a Budapesti áruházból nem a legutolsó logot.

    SELECT termek.vonalkod,termek.aruhaz,termek.ar, arvaltozas_log.valtozas_datum,arvaltozas_log.regiar
    FROM termek LEFT JOIN arvaltozas_log
    ON termek.vonalkod=arvaltozas_log.vonalkod
    AND termek.aruhaz=arvaltozas_log.aruhaz GROUP BY termek.aruhaz;

    Tovább szűröm így MAX(arvaltozas_log.valtozas_datum) akkor már a legutolsó dátumot kapom vissza, de nem az ahhoz tartozó "régi árat" teszi hozzá .... :W

    SELECT termek.vonalkod,termek.aruhaz,termek.ar, MAX(arvaltozas_log.valtozas_datum),arvaltozas_log.regiar
    FROM termek LEFT JOIN arvaltozas_log
    ON termek.vonalkod=arvaltozas_log.vonalkod
    AND termek.aruhaz=arvaltozas_log.aruhaz GROUP BY termek.aruhaz;

    Köszönöm ha valaki tudna segíteni. :R

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