|
| Udtræk af poster via bits i felter Fra : Christian Estrup |
Dato : 28-12-00 21:44 |
|
Hejsa,
Jeg prøver 'desperat' at trække nogle poster ud af en Access-db, valgt ud
fra enkelte bits i et felt.
Det kunne 'for eksempel' være en tabel med nyheder, hvor et felts bits
angiver kategorier for den enkelte nyhed - og hvor brugeren så har valgt kun
at se nyheder fra visse kategorier. Jeg vil så trække alle poster ud, hvor
mindst én bit (=kategori) matcher.
(Når jeg har valgt denne løsning frem for den klassiske 'textbook-løsning'
med 1 tabel til nyheder, 1 til kategorier og 1 til 'nyhedskategori-par'
(pga. mange-til-mange-relationen), er det fordi, jeg _ved_, at der aldrig
vil være flere kategorier end antal bits i et Long, og bit-løsningen derfor
IMO er lettere)
Jeg vil altså have noget i retning af:
conn.execute ("SELECT * FROM tNews WHERE (tNews.iCategories AND " &
iUserNewsMask & ")>0")
- men dét er Access-driveren ikke meget for. Har også prøvet '&' og '&&' i
stedet for 'AND', uden helt. Kan det simpelthen ikke lade sig gøre med
Access-db'er?
Jeg skal på et senere tidspunkt opgradere db'en til MSSQL7 - vil det kunne
lade sig gøre dér?
- Christian Estrup
| |
Lauritz Jensen (28-12-2000)
| Kommentar Fra : Lauritz Jensen |
Dato : 28-12-00 13:32 |
|
Christian Estrup wrote:
>
> Det kunne 'for eksempel' være en tabel med nyheder, hvor et felts bits
> angiver kategorier for den enkelte nyhed - og hvor brugeren så har valgt kun
> at se nyheder fra visse kategorier. Jeg vil så trække alle poster ud, hvor
> mindst én bit (=kategori) matcher.
Det kan du TTBOMK ikke (har lige kigget access funktionerne igennem).
Men det virker også ret misforstået at bruge en access-base (eller noget
RDBMS) på den måde: Den har jo ingen mulighed for at benytte nogen
indexer, så du skal ikke forvente at det kommer til at køre særlig
hurtig (du ligefrem tvinger den ud i et full-table-scan, smart). (det
samme gælder for mssql7, men den har dog operatorene)
Lad databasen gøre det den er god til og lav en mange-til-mange.
--
Lauritz
| |
|
|