29. november 2001 - 14:29Der er
22 kommentarer og 1 løsning
Flere værdier for en database
Hvordan laver man en søgning i en database hvor man har flere værdier f.eks. (1 og 2 og 3) og hvor man KUN for vist de records hvor disse 3 værdier optræder i?
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
\"optræder i\" betyder ikke nødvendigvis \"del af en kolonne (felt)\", det kan også bare være 1,2,3 optæder for sig selv i en kolonne. % % viker kun på Tekst-felter og så vist jeg husker også kun samme med LIKE.
strSQL = \"SELECT * FROM tabel WHERE felt LIKE \'%1%\' AND felt LIKE \'%2%\' AND felt LIKE \'%3%\';\"
Okay … jeg glemte hvis at sige at min database er relations database. Det vil sige at jeg har en tabel med mine enheder og en men de komponenter der kan være i en enhed. Der er så lavet en deltnøgle-tabel hvor de to tabellers prima -id er i og det er så meningen at jeg kun vil så de enheder der f.eks. har komponent 1 og 3 ikke dem men 1 og 2 og 3 KUN 1 og 3.
Der kommer slet ingen data! her er IIS5.0 fejlmeddelelsen : Fejltype: Microsoft JET Database Engine (0x80040E14) Der er en ugyldig SQL-sætning. \"DELETE\", \"INSERT\", \"PROCEDURE\",\"SELECT\" eller \"UPDATE\" var ventet. visliste.asp, line 102
.... og linie 102 ser sådan ud:
objRS.Open strSQL, Conn
så der altså et eller andet galt, det er som om at asp ikke kan køre en \"IN(select)\" ting ..
ASP kan sagtens køre en In(Select...) - den sender den bare videre til databasen. Spørgsmålet er om databasen kan håndtere det. Hvad for en database bruger du ?? Og hvordan har du præcis skrevet SQL sætningen ?
det virker nu ikke ... jeg får E_ID 1 og 2 hvor E_ID har K_ID 1 og 2 men hvor E_ID 2 har K_ID 1.. og det jeg ville var jo kun at finde den E_ID hvor begge var i.
Det er så vidt jeg kan ikke muligt med en let SQL sætning prøv denne:
SELECT enhed.navn FROM (enhed LEFT JOIN DNT ON enhed.E_ID = DNT.E_ID) LEFT JOIN komponent ON DNT.K_ID = komponent.K_ID WHERE DNT.K_ID IN (1,3) AND DNT.E_ID NOT IN (SELECT DNT.E_ID FROM DNT WHERE DNT.K_ID NOT IN (1,3));
Den giver godt nok X antal enhed.navn, faktisk lige så mange som der er tal du vil søge på (1,3). Problemmet er også at den ikke virker hvis du søger på (1,2,3) så giver den både radio og tv.!!
Hvordan løser man problemet med at søger på (1,2,3)?????
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.