26. november 2009 - 11:55Der er
5 kommentarer og 1 løsning
Where Clause problem
Hej alle
Jeg har et problem med en where clause, er ikke helt sikker på om man overhovedet kan få det resultat jeg ønsker, men jeg prøver at beskrive problemet her: Jeg har en tabel med lokationer, som identificeres på ID. Så har jeg en tabel med attributter der ligeledes identificeres på ID. Så har jeg en tabel hvor disse id'er er samlet. Ex: LokationAttributtabel id lokationid attributid 1 1 5 2 1 8 3 2 5 4 3 8 5 4 7
På følgende where clause: WHERE LokationAttributtabel.attributid = 5 får jeg selvfølgelig lokationerne med lokationid 1 og 2 ud. Hvis jeg ændrer where clausen til WHERE LokationAttributtabel.attributid = 5 AND LokationAttributtabel.attributid = 8 får jeg ingen resultater ud, hvor jeg troede at jeg kunne få lokationid 1 ud, da den har attributid 5 og 8. Det skal nemlig være muligt at vælge flere attributer, og så kun få lokationer ud der har alle de valgte attributid'er. Jeg bruger MSSQL Server 2005 Management Studio. På forhånd tak... fckmax
Problemet med din AND, er at de to attributid du vil finde ligger i hver sin post. Så når du sætter en AND imellem de to betingelser, så vil den aldrig give noget resultat (da hver post kun har een attributid).
Du kan gøre det med noget i den her retning:
-- Først finder du de poster i tabellen, hvor en af dem er fundet SELECT LocationID FROM LokationAttributtabel WHERE attributid = 5 OR attributid = 8
-- Så vælger du de lokationer der har fået præcis 2 hits i udvælgelsen SELECT LocationID, COUNT(*) AS hits FROM LokationAttributtabel WHERE attributid = 5 OR attributid = 8 GROUP BY LocationID HAVING COUNT(*) = 2
SELECT lat1.lokationid FROM LokationAttributtabel lat1 JOIN LokationAttributtabel lat2 ON lat1.lokationid=lat2.lokationid WHERE lat1.attributid=5 AND lat2.attributid=8
pi-hus og arne_v: Tak for jeres svar, det var dejlig hurtigt og det hele ;) Jeg vil forsøge mig frem med begge forslag - Endnu en gang mange tak.
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.