Vilken databashanterare?
Sql Server/access
select top 3 * from
(select id,tidpunkt from t_news
union all select id,tidpunkt from t_text) s
order by tidpunkt desc, id
12 svar · 275 visningar · startad av Peeer
Nu får ni något att bita i.
Jag har två tabeller (t_news & t_text). I var och en av dessa tabeller finns det X antal poster. Varje post har ett fält som innehåller en tidpunkt (yyyy-mm-dd hh:mm:ss) samt ett fält som innehåller ett IDnr. Jag skulle vilja plocka ut IDnr på de poster som har senast tidpunkt (vill inte ha några dubbletter av IDnr). Svårt att förklara vad jag menar så jag visar med ett exempel.
Databasen består av..
t_news:
id, tidpunkt:
12, 2002-05-13 15:14:16
4, 2002-12-14 12:05:49
15, 2003-02-05 21:45:02
12, 2002-12-24 14:55:04
osv...
t_text:
id, tidpunkt:
14, 2002-07-30 02:15:45
7, 2002-10-15 08:09:12
12, 2003-01-26 23:57:19
osv...
Ur denna data ska följande plockas ut:
15, 2003-02-05 21:45:02
12, 2003-01-26 23:57:19
4, 2002-12-14 12:05:49
dvs. De data där datumen är som högst men utan dubletter av IDnr.
Vilken databashanterare?
Sql Server/access
select top 3 * from
(select id,tidpunkt from t_news
union all select id,tidpunkt from t_text) s
order by tidpunkt desc, id
Nästan så. Med den koden så får man tyvärr dubbletter. Jag vill alltså inte att samma id ska komma flera gånger. Resultatet ska bli 3st olika IDnr.
Jag provade att sätta in distinct lite här och där, men det hjälpte inte. Hur göra??
(ruggigt vass kod annars!)
Databasen är en access-databas!
Har löst det hela provisoriskt mha. lite for-loopar och if-satser. Men kommer ni på någon lösning så man kan klara av det redan i SQL-strängen så vore det ju ganska bra!
I så fall är det bara att ta bort all från union
select top 3 * from
(select id,tidpunkt from t_news
union select id,tidpunkt from t_text) s
order by tidpunkt desc, id
Tyvärr inte. Resultatet blir fortfarande att dubbletter förekommer. Sen undrar jag vad "s" står för i din kod, det verkar fungera lika bra utan det!?
Jaså, union innebär att alla duplikat skall tas bort så det verkar märkligt. Om det är som du säger så är det fel i Access.
S är bara ett (onödigt) korrelationsnamn som krävs av vissa DBMS.
Jahaja. Då får man väl köra med mina fina if-satser istället då. Men du ska ha stort tack för hjälpen!
Väcker den här tråden igen. Exakt samma fråga som i första inlägget, fast den här gången med mySQL. Hur göra?
Om du inte har version 4.1 så är det enklaste att ställa två frågor med limit 3 och sedan hantera det i klienten.
Alternativet är att använda en temp-tabell och fylla den.
Jahopp. Då får det bli dubbla frågor då. Tack för hjälpen!
Följdfråga: Är det några fler skillnader i ver 4.1 i jämförelse med ver. 3.23.54. Tänkte fråga webhotellet om de har lust att uppdatera till den versionen. Det kostar ju inget.
I och med att version 4 ännu är i en testfas så kommer inget webhotell att uppgradera innan en officiell version släpps.
Jadå var ju det problemet ur världen. Stort tack!!