Keresés

Hirdetés

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

  • jeges

    senior tag

    válasz Gh0sT #245 üzenetére

    a táblás megoldás szerintem a köv. módon kivitelezhető:
    tárolod a munka- és munkaszüneti napokat pl. úgy, h a munkanap ''mellett'' 1, a munkaszüneti nap ''mellett'' 0 az érték.
    mivel a dátum tárolásában csak az egész rész ''játszik'', ezért a tábláknak mindegy, h 10:03:42 vagy 17:12:04.
    pl:
    A tábla: rekordonként eltárolva a dátum1 és dátum2, és van egy ID mezője is
    B tábla dátumok és 0/1 értékek (''Datum'' és ''ertek'' mezők)

    L1 lekérdezés (''normál'' select A és B join):
    select A.ID, B.ertek
    from A inner join B on (A.datum1<=B.Datum and A.datum2>B.Datum)
    ;

    L2 lekérdezés (összegzés A tábla ID mezőjére):
    select ID, sum(ertek)
    from L1
    group by ID
    ;

    L2 eredménye azon 1 értékek összege, ahol az A tábla két dátuma ''közé'' esik a B tábla dátum mezője.

    Megjegyzem, ha pl. nem 0 és 1 a B tábla ertek mezőjének értéke, úgy a COUNT() függvény is jó lenne, csak köllene egy WHERE záradék L1-be. Például ha a B.ertek Y vagy N, úgy

    L1 lekérdezés (''normál'' select A és B join):
    select A.*, B.ertek
    from A inner join B on (A.datum1<=B.Datum and A.datum2>B.Datum)
    where B.ertek=''Y''
    ;

    L2 lekérdezés (összegzés A tábla ID mezőjére):
    select ID, count(ertek)
    from L1
    group by ID
    ;

    ui1: Egyetlen lekérdezésből is megoldható egyébként, de így átláthatóbb szerintem.
    ui2: A konkrét szintaxisra már nem emlékszem, az elvet akartam leírni. Ha ''gyártasz'' az access-ben egy ''normál'' lekérdezést, sql nézetben a fentiekhez hasonlókat fogsz látni.

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