Tema: Re: Dar vienas prašymas dėl SQL
Autorius: 2x50
Data: 2012-01-04 10:34:26
Manau, kad butu neblogas variantas jei tbl1.ivedimo_data ir 
tbl2.koregavimo_data butu indeksuoti laukai (kaip suprantu id laukai yra 
indeksuoti pagal nutylejima)...
Kitaip reikia galvoti kazka geresnio, kas naudotu indeksuotus laukus. 
Nezinant to, nelabai iseis pasiulyti varianto, kuris "nelagins serverio" :)

"HyperLink"  wrote in message news:je12fq$lhn$1@trimpas.omnitel.net...

firebird. gal ir geras tavo variantas, bet žiauriai lagina serverį :)

"2x50"  wrote in message news:je0vq0$hen$1@trimpas.omnitel.net...

Vistik visu pirma reiktu pristatyti apie kokia baze kalba...

Jei gerai suprantau salyga, vienas is budu toks

select
  t1.rec_id
from tbl1 t1
where
  t1.ivedimo_data between :d1 and :d2 or
  exists
     (
    select null
    from tbl2
    where
      rec_id = t1.rec_id and
      koregavimo_data between :d1 and :d2
    )


"HyperLink"  wrote in message news:je0skb$dcc$1@trimpas.omnitel.net...

yra dvi lentelės:
tbl1 (rec_id, ivedimo_data,pildymo_data)
tbl2 (rec_id, koregavimo_data)

tbl1 lentelėje saugomi unikalūs įrašai
tbl2 lentelėje saugoma info kada prie jų buvo prisiliesta (gali būti
neribotas skaičius to paties tbl1 įrašo korekcijų)

Reikia ištraukti iš tbl1 įrašus, kur įvedimo ar koregavimo data yra tame
pačiame intervale. Reikia, kad būtų tik vienas selecte įrašas apie tą patį
tbl1 įrašą.

pvz.:

tbl1:

rec_id, pildymo_data, ivedimo_data
1           2001.01.01       2001.01.03
2           2000.02.03       2000.02.05
3           2000.01.02       2000.01.02


tbl2:

rec_id, koregavimo_data
1          2001.01.07
1          2002.05.03
1          2003.01.03
2          2001.02.04
3          2000.12.31

užsidėjus laikotarpį 2001.01.01-2001.02.05 turėčiau gauti:

rec_id, pildymo_data
1           2001.01.01
2           2000.02.03

Būčiau labai dėkingas už pagalbą!