28. januar 2011 - 12:44Der er
5 kommentarer og 1 løsning
SELECT WHERE NOT BETWEEN
Hey ! Sidder og prøver at trække nogle rækker ud. Det foregår således. Jeg har en tabel hvor der er 'TimeStamps' for hver gang brugeren har lavet noget. Nu vil jeg så gerne trække alle de brugere der IKKE har lavet noget ud på en liste.
Har forsøgt mig med f.eks :
SELECT User FROM User_Reg WHERE Time_Stamp NOT IN ( SELECT User_ID FROM User_Log WHERE Time_Stamp BETWEEN Date'2010-01-01' AND Date'2010-12-31' )
Og føler det sejler lidt da den sikkert tjekker hele User_Log hver gang den har ét User_ID for at finde det hele. Det tager en millard år.
Er der en mere effektiv løsning her ? Eller bare en løsning der virker. :)
SELECT User FROM User_Reg ur WHERE Time_Stamp NOT IN ( SELECT User_ID FROM User_Log ul WHERE ur.user_id = ul.user_id AND Time_Stamp BETWEEN Date'2010-01-01' AND Date'2010-12-31' )
SELECT ur.user FROM user_reg ur, user_log ul WHERE ur.user_id = ul.user_id(+) AND ul.user_id IS NULL AND ul.time_stamp BETWEEN '2010-01-01' AND '2010-12-31';
- hvis jeg ellers har forstået problematikken korrekt... Med forbehold for syntaksbøffer :-)
Tak for hjælpen TeePee, det hjalp utroligt meget på effektiviteten at udskifte med NOT EXISTS, nu ser det ud til at køre :)
Fortsat god aften !
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.