webForumDet fria alternativet

Föregående och nästa post i SQL sats?

Databaser & SQL

22 svar · 1 221 visningar · startad av Zaiman

Medlem sedan dec. 20014 239 inlägg
Frågan#1

Har idag en fråga som jag tänkte göra om så att jag får ut föregående,denna och nästa post. Om det nu finns någon föregående eller nästa post såklart.
Databas = Access, SQLServer 2000

		SQL= "SELECT id, Image_L, Image_text FROM tbl_Images WHERE id =" & Request.Querystring("ImageID")

Så ser frågan ut idag..

Och nej.. jag har inte sökt i forumet ännu.

Medlem sedan juni 200032 967 inlägg
#2

Och nej.. jag har inte sökt i forumet ännu.

Då väntar vi tills du gjort det.

Använder du både Access och SQL Server 2000?

Medlem sedan dec. 20014 239 inlägg
#3

Yepp, en version med access och en med SQL 2000.

Har nu sökt en del men inte hittat det jag sköker. Letar givetvis vidare...

Medlem sedan feb. 20011 198 inlägg
#4

Det går inte med ren SQL.
Och med den frågan borde du bara få en träff.

Medlem sedan dec. 20014 239 inlägg
#5

Öööh...

Det går inte med ren SQL.
Och med den frågan borde du bara få en träff.

Självklart får jag bara en träff med min fråga idag. Men min fråga var ju hur jag ska skriva om den för att få ut föregående samt nästa post.

Medlem sedan juni 200032 967 inlägg
#6

Går väl alltid bra att lösa med en union?

select top 1 fld1, fld2, fld3 from tbl where id < 4711 order by id desc
union
select top 1 fld1, fld2, fld3 from tbl where id =4711
union
select top 1 fld1, fld2, fld3 from tbl where id >4711 order by id

edit: glömde top 1 i all min iver.

Medlem sedan maj 2000194 inlägg
#7

Här är ett relevant forumsvar:

http://www.webforum.nu/showthread.php?t=77790

;)

Medlem sedan maj 2000194 inlägg
#8

:o

Oj, jag såg strax efteråt att svaret min länk pekar på kanske inte var det som riktigt efterfrågades. Sorry.

Medlem sedan dec. 20014 239 inlägg
#9

@nders:

Jag förstår ditt svar men får det inte att fungera.
Kan det ha med att göra att id fältet är av datatypen uniqueidentyfier? Eller så skriver jag helt galet :)

Nåväl, klurar vidare..

Medlem sedan juni 200032 967 inlägg
#10

Kan det ha med att göra att id fältet är av datatypen uniqueidentyfier?

Uh, ja... Hur ska man kunna veta vilken post som är förra / nästa då? Har du något datetime-fält?

Varför inte bara lägga in en vanlig räknare också?

Medlem sedan dec. 20014 239 inlägg
#11

Plitade in ett id2 fält typen int. Räknar upp ett för för varje post.

Men jag får fel på raden där ordet union står..

Medlem sedan dec. 200012 464 inlägg
#12

Vad får du för fel då?

Medlem sedan dec. 20014 239 inlägg
#13

Felmeddelande lyder:

Incorrect syntax near the keyword 'UNION'

/red
Frågan jag skrivit:
SELECT TOP 1 id2, Image_L, Image_text FROM tbl_Images WHERE id2 > 7 order by id2 desc
UNION
SELECT TOP 1 id2, Image_L, Image_text FROM tbl_Images WHERE id2 = 7
union
SELECT TOP 1 id2, Image_L, Image_text FROM tbl_Images WHERE id2 < 7 order by id2

Medlem sedan juni 200032 967 inlägg
#14

Och hur ser din kompletta SQL-fråga ut?

Medlem sedan dec. 20014 239 inlägg
#15

Redigerade mitt tidigare inlägg. Osnabb som man är han @nders skriva innan redigeringen.

Medlem sedan juni 200032 967 inlägg
#16

Hmm... Får du alltså det felet med Access eller SQL Server?
Jag tycker det ser rätt ut, men jag har å andra sidan feber...

Medlem sedan dec. 20014 239 inlägg
#17

SQL Server ..

Medlem sedan feb. 20011 198 inlägg
#18

Har du provat att ta bort den översta order by?

Medlem sedan dec. 20014 239 inlägg
#19

Har nu provat att bara plocka ett fält:

SELECT TOP 1 id2 FROM tbl_Images WHERE id2 > 7 
UNION
SELECT TOP 1 id2 FROM tbl_Images WHERE id2 = 7
UNION
SELECT TOP 1 id2 FROM tbl_Images WHERE id2 < 7

Det ser nästan bra ut... Jag behöver lite fler villkor, dessa är inte problemet nu.
Utan, om jag väljer fler fält:

SELECT TOP 1 id2, image_text FROM tbl_Images WHERE id2 > 10 AND Gallery_name = 18
UNION
SELECT TOP 1 id2, image_text FROM tbl_Images WHERE id2 = 10 AND Gallery_name = 18
UNION
SELECT TOP 1 id2, image_text FROM tbl_Images WHERE id2 < 10 AND Gallery_name = 18

Så kommer följande fel:
Server: Msg 421, Level 16, State 1, Line 1
The ntext data type cannot be selected as DISTINCT because it is not comparable.

OBS!! Har bytt till SQL Server 2005 precis nu.
Ska prova köra frågan i SQL Server 2000 när jag kommer hem.

Medlem sedan dec. 200012 464 inlägg
#20

Top utan order by är meningslöst.

SELECT TOP 1 id2, image_text 
FROM tbl_Images 
WHERE id2 > 10 
AND Gallery_name = 18
order by id2 asc
UNION all
SELECT  id2, image_text 
FROM tbl_Images 
WHERE id2 = 10 
AND Gallery_name = 18
UNION all
SELECT TOP 1 id2, image_text 
FROM tbl_Images 
WHERE id2 < 10 
AND Gallery_name = 18
order by id2 desc
264 ms totalt · 4 externa anrop · v20260731065814-full.868a69e5
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)