Problem:
Insert into tabel1 (felt1,felt2) select top 10 "1",max(id),max(felt4) from
tabel2 group by felt3 order by felt4
Flere felter i source end i destination.
Forklaring
Jeg vil cache resultatet af et kompliceret select, fordi det lægger serveren
ned, databasen hænger, og antal samtidige connects fra webserveren stiger
til max, og jeg må genstarte IIS.
Derfor vil jeg lægge resultatet af selected i en tabel, og regenerere f.ex.
en gang i timen.
På forsiden skal vises en blok med nye varer, en blok med et antal varer fra
en kategori, en blok med et antal varer fra en anden kategori. etc.
Kriteriet er kompliceret, fordi der skal tages højde for at varen helst
skal være på lager, og den skal være i den valgte kategori, eller en under
eller under-under- osv til den valgte.
Så jeg vil lave en tabel, der blot indeholder records med blok-id, og
vare-id for de varer, der er kvalificeret til at blive vist i den blok.
Der er varer, der deler det samme billede, f.ex. flere varianter/størrelser
af den samme ting, så derfor vælger jeg det første produkt pr billede
insert into blokprod (blokid,vareid) select 1,min(id) from varer where .....
group by billede
Det fungerer.
Men hvis jeg vil have de sidste 10 nyheder, så laver jeg et select:
select top 10 min(id),min(oprettet) as oprettet
from varer where...
group by billede
order by oprettet desc
Jeg bliver nødt til at have 'oprettet' i select-listen, for at sortere efter
den, men jeg vil ikke sætte den ind i min blokprod-tabel.
Kan det undgås, eller bliver jeg nødt til at lave et ekstra felt i
destinationen?
insert into blokprod(blokid,vareid,NULL) select top 10
"1",min(id),min(oprettet)....
Leif
|