Avatar billede sb Nybegynder
12. august 2001 - 20:52 Der er 6 kommentarer og
1 løsning

Problemer med SQL query

SQL = \"SELECT * FROM reklame_banner WHERE (visninger=(SELECT MIN(visninger) FROM reklame_banner WHERE sidenr=\" & nummer & \"))\"

Ovenstående skulle vælge den posten i tabellen hvor værdien i feltet \"visinger\" er mindst, og hvor feltet \"sidenr\" indeholder værdien nummer.

Men det virker ikke helt. Queryet vælger kun ud fra hvilken post som har mindst værdi i feltet \"visninger\", og tager ikke hensyn til om indholdet i feltet \"sidenr\" er = nummer
Avatar billede mukke Nybegynder
12. august 2001 - 21:39 #1
Jeg tror jeg forstår hvad der sker. I din subselect finder du det mindste antal visninger som en reklame til den givne side har. Derefter finder du en tilfældig) reklame med netop det antal sider. Det vil sige at hvis reklameA for side 2 har 10 visninger og er den som er vist mindst, så kan du resikere at vise reklameB for side 24 hvis den også har netop 10 visninger.

En - efter min mening - smartere måde at gøre det på er

SELECT * FROM reklame_banner WHERE sidenr=\" & nummer & \" LIMIT 1;
Avatar billede mukke Nybegynder
12. august 2001 - 21:41 #2
risras... der mangler naturligvis lige lidt, så det bliver

SELECT * FROM reklame_banner WHERE sidenr=\" & nummer & \" ORDER BY visninger LIMIT 1;
Avatar billede sb Nybegynder
13. august 2001 - 00:39 #3
mukke> Tak for tipset. Det er nok en smartere måde at gøre det på.

Men når jeg kører SELECT * FROM reklame_banner WHERE sidenr=\" & nummer & \" ORDER BY visninger LIMIT 1;  Får jeg fejlen :

\"[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near \'LIMIT\'.\"

Findes LIMIT ikke i alle vertioner av MS SQL server? (tror det er vertion 6.5 jeg bruger). Eller er det noget andet som er galt?

Avatar billede slash Nybegynder
13. august 2001 - 07:42 #4
limit findes ik\' i SQL-server (findes så vidt jeg ved i mysql!)

måske du skulle brge TOP istedet?
Avatar billede ldanielsen Nybegynder
13. august 2001 - 09:35 #5
Dette virker

SELECT *
  FROM reklame_banner
WHERE visninger =
(
SELECT MIN(visninger) FROM reklame_banner WHERE sidenr = \" & nummer & \"
)
AND sidenr = \" & nummer & \"
Avatar billede sb Nybegynder
13. august 2001 - 10:45 #6
ldanielsen> Uden at have prøvet, vil jeg tro at dit forslag ikke virker :

Du vælger ud posten hvor \"visninger\" er mindst, og \"sidenr\" = nummer.

Men det er jo ikke sikkert at en post med \"sidenr\" = nummer, samtidig indeholder laveste værdi i \"visninger\", af alle poster i databasen.
Avatar billede sb Nybegynder
13. august 2001 - 10:48 #7
Beklager jeg havde overset den inderste \"WHERE sidenr=nummer\". Da burde dit forslag jo virke.

Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester