Avatar billede svalde Nybegynder
17. december 2006 - 20:01 Der er 10 kommentarer og
2 løsninger

Udtræk af alle poster undtagen den sidst oprettet.

Hey,

jeg skal bruge en linie kode der trækker alle poster undtagen den sidst oprettet ud af en database. Hvordan vil en sådan se ud?

På for hånd tak og god jul,
/Anders
Avatar billede kalp Novice
17. december 2006 - 22:58 #1
har dine poster et unikt id? hvis ja kan du gøre sådan her

så kan du gøre noget alá

SELECT * FROM dinTabel WHERE id <> LAST_INSERT_ID();

eller

SELECT * FROM dinTabel WHERE id NOT IN (SELECT MAX(id) as sidste FROM dinTabel)
Avatar billede kalp Novice
17. december 2006 - 23:00 #2
SELECT * FROM dinTabel WHERE id NOT IN (SELECT MAX(id) FROM dinTabel)

er vel egentlig også nok=)
Avatar billede svalde Nybegynder
18. december 2006 - 21:34 #3
Hey klap,

Nu har jeg siddet og nørklet lidt med det kode værk du har givet mig.
Jeg kan bare ikke få det til at virke efter hensigten.

Lad os sige at jeg har 3 poster i min db, ID=1, ID=2 og ID=3.

Det jeg så ønsker mig af den SQL linie du har sendt mig er kun at få ID=1 og 2 frem. Men enten bliver alle vist, eller også bliver ingen af dem vist... Hvad gør jeg forkert?
Avatar billede kalp Novice
19. december 2006 - 17:39 #4
SELECT * FROM dinTabel WHERE id NOT IN (SELECT LAST_INSERT_ID() FROM dinTabel);
Avatar billede kalp Novice
19. december 2006 - 17:39 #5
og ellers må du vise mig din tabels opbygning og din sql hvordan den ser ud
Avatar billede svalde Nybegynder
20. december 2006 - 13:36 #6
Hey, igen. :-)

Nu har jeg prøvet med den sidste linie du gav mig, og jeg har får flg. fejl:

4 Native Error Code: 1064 [TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT LAST_INSERT_ID() FROM Blog)' at line 1

Det jeg prøver at lave er en nyhedsfunktion hvor den seneste nyhed skal vises i fulde træk, men hvor der kun skal vises en smule af de efterfølgende.

Jeg har en database ved navn : Nyhed med unik ID.

/Anders.
Avatar billede pidgeot Nybegynder
20. december 2006 - 13:47 #7
kalp, LAST_INSERT_ID() virker kun hvis du har indsat rækken i samme connection, og det oven i købet er den sidst indsatte række med den connection (uafhængigt af tabel). Derfor skal den anden udgave med MAX() bruges.

svalde, det skulle vel aldrig være sådan så du kører med en ældre MySQL end 4.1? Den understøtter nemlig ikke subqueries. Den kan dog nok omskrives - ved at bruge http://dev.mysql.com/doc/refman/4.1/en/rewriting-subqueries.html som skabelon vil jeg tro det skal være sådan her:

SELECT DISTINCT t1.* FROM nyheder AS t1, nyheder AS t2 WHERE t1.id!=MAX(t2.id);

..bemærk dog den er utestet, så ikke sikkert den virker. Gør den ikke det, er du nok nødt til at bruge to queries hvis du kører med den ældre udgave.
Avatar billede kalp Novice
20. december 2006 - 16:37 #8
så kan jeg stadig ikke forstå hvorfor denne ikke virker.

SELECT * FROM Nyhed WHERE id NOT IN (SELECT MAX(id) FROM Nyhed)
Avatar billede pidgeot Nybegynder
20. december 2006 - 17:20 #9
Det bør den også, men der er som sagt den mulighed at svalde kører med en gammel udgave af MySQL - hvis det er tilfældet, så er det selvfølgelig bare et spørgsmål om at opgradere, men såfremt det af en eller anden grund ikke er muligt, skal den query omskrives.
Avatar billede svalde Nybegynder
28. december 2006 - 16:35 #10
Hey begge,

Så vidt jeg kan se kører min server med v. 4.0.24 så det forklarer jo nok de problemer jeg har haft med at få det til at virke.

I har begge været til stor hjæpl, er der mulighed for at jeg kan give jer begge point?

/Anders
Avatar billede pidgeot Nybegynder
28. december 2006 - 17:06 #11
Det er der - når nu jeg har lagt et svar bør du kunne markere os begge og så trykker accepter. :)

Virkede omskrivningen i øvrigt?
Avatar billede svalde Nybegynder
01. januar 2007 - 18:11 #12
Jeg har slet ikke prøvet den, jeg har valgt en anden løsning.
Men nu har jeg den til en anden gang! :)

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