29. maj 2006 - 17:33Der er
4 kommentarer og 1 løsning
joine 2 tabeller
Jeg har rodet en del med denne forespørgsel uden held.
jeg har 2 tabeller den ene hedder Salg og den anden hedder Users I tabellen Salg ligger "user" og "dato". I tabellen Users ligger navn.
Salg Users ---- ----- user navn dato
Tabellen Users-navn indeholder alle brugernavne. Tabellen Salg indeholder en entry hvor gang en bruger er logget ind med dato.
f.eks bruger1021 2006-12-24
Nu vil jeg gerne sammenligne disse 2 tabeller og finde ud af hvilke brugere (fra Users) der "ikke" var logget ind en given dato (fra Salg).
Så hvis jeg f.eks har en brugerliste på 50 i Users og der er 2 der har været logget ind på en given dato skal output være de 48 brugere der ikke har være logget ind den angivne dato.
jeg har prøvet noget i retning af nedenstående i flere forskellige afskygninger uden held.
SELECT navn FROM Users LEFT JOIN Salg ON navn=user WHERE user IS NULL LEFT JOIN Salg ON dato WHERE dato = '2006-12-24'
Nej, jeg kan godt se den ikke virker efter hensigten - det er nok den ekstra betingelse der gør det...
Jeg er ikke sikker på den sådan lige er til at skrive om fra den subselect - men du kan jo evt. vælge at dele det op i to forespørgsler, en til at hente de ID'ere der er, og en anden der så sætter dem ind i stedet for subselecten i en kommaseparert liste...
Dvs. den første query ville se sådan ud:
SELECT user FROM salg WHERE dato='2006-12-24';
og hvis denne returnerede bruger 1, 2 og 3, ville den anden forespørgsel så se sådan ud:
SELECT navn FORM Users WHERE navn NOT IN (1,2,3);
såfremt det der gemmes i Salg er et tal - ellers skal du huske at de skal skrives som strings: NOT IN ('1','2','3')
Jeg smider et svar som du kan bruge hvis du vil - men for min skyld må du gerne lade spørgsmålet stå et par dage og se om der er en eller anden der har en bedre ide :)
Lige til din orientering: Du kan godt bruge NOT IN sålænge du selv udfylder ID'erne - i hvert fald i MySQL 4.0.
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.