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?
22 svar · 1 221 visningar · startad av Zaiman
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.
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?
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...
Det går inte med ren SQL.
Och med den frågan borde du bara få en träff.
Ööö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.
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.
:o
Oj, jag såg strax efteråt att svaret min länk pekar på kanske inte var det som riktigt efterfrågades. Sorry.
@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..
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å?
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..
Vad får du för fel då?
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
Och hur ser din kompletta SQL-fråga ut?
Redigerade mitt tidigare inlägg. Osnabb som man är han @nders skriva innan redigeringen.
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...
SQL Server ..
Har du provat att ta bort den översta order by?
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.
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