---
title: "Problem med SQL-sats"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/106835-problem-med-sql-sats"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "lillebror"
published: "2004-07-06T19:13:45.000Z"
updated: "2004-07-10T12:00:57.000Z"
replies: 22
views: 619
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/106835-problem-med-sql-sats"
---

# Problem med SQL-sats

_Sida 1 av 2._

## #1 — lillebror, 2004-07-06T19:13Z

Jag håller på att designa ett forum. Forumet i sig fungerar bra. Nu har jag dock ett litet litet problem med en SQL-sats.

I forumet skriver man in nya inlägg var på de sorteras i den ordning de blev inlagda. Nu vill jag göra så att när en tråd har fått ett nytt svar så hamnar den högst upp i listan för att visa användaren att det är den tråd som har fått ett svar senast, lite som webforum tror jag.

Så här ser SQL-satsen ut...

```
SqlListThread = "SELECT * FROM t_threads WHERE FORUMID = " & request.querystring("xforumID") & " AND ANSWERID=0 ORDER BY THREADID DESC"
```

När en post i t_threads har fältet ANSWERID=0 indikerar det att det är en huvudtråd. Är det ett svar på en huvudtråd har ANSWERID det threadID huvudtråden har.

Jag vill sortera en tråd efter vilket forum det tillhör samt det svar tillhörande aktuell tråd som är inlagt senast. Tillräckligt luddigt? Om det är något som behöver vidarutvecklas så gör jag gärna det :)

Tabellen ser ut så här...

Threads
\============
ID
ThreadID
ForumID
Subject
Author
NumberOfAnswer
AnswerID
Date
Hits
Content

Permalänk: https://www.webforum.nu/p/106835

## #2 — LarsG, 2004-07-07T11:22Z

```
select <kolumner>,coalesce((select max(date) from threads
where answerid = t.threadid),date) as orderDate
from threads t
order by orderDate desc
```

Permalänk: https://www.webforum.nu/p/1383107

## #3 — lillebror, 2004-07-07T19:09Z

Får ett felmeddelande när jag kör SQL-satsen (error '80004005' ). Så här ser den ut i min kod.

```
SqlListThread = "select subject, author, date, coalesce((select max(date) from t_threads where answerid = t.threadid),date) as orderDate from t_threads torder by orderDate desc"
```

Min tabell heter t_threads...

Permalänk: https://www.webforum.nu/p/1383264

## #4 — icaaq, 2004-07-07T19:20Z

Testa att klammra \[\] ordet date som kan (är?) ett reserverat ord..

mv icaaq

Permalänk: https://www.webforum.nu/p/1383267

## #5 — LarsG, 2004-07-07T19:23Z

Vilken feltext får du?

Permalänk: https://www.webforum.nu/p/1383268

## #6 — lillebror, 2004-07-07T19:31Z

error '80004005' 
/forumdisplay.asp, line 27 

det är själva feltexten och på line 27 körs Set objRS = Conn.Execute(SqlListThread)

felmeddelandet syftar på att det är något knas i sql-satsen?

Permalänk: https://www.webforum.nu/p/1383269

## #7 — LarsG, 2004-07-07T19:43Z

Vilken dbms?

Permalänk: https://www.webforum.nu/p/1383272

## #8 — lillebror, 2004-07-07T19:47Z

Microsoft Access 2000!

Permalänk: https://www.webforum.nu/p/1383276

## #9 — LarsG, 2004-07-07T19:56Z

Det är bra om du nämner det direkt. Access följer inte SQL-standarden.

```
select nvl((select max([date] from t_threads
where answerid = t.threadid) ,[date]) , <kolumner>
from t_threads t
order by 1 desc
```

Permalänk: https://www.webforum.nu/p/1383280

## #10 — lillebror, 2004-07-07T20:05Z

**torder**, ska det vara t order (med ett mellanrum)?

skriver jag "," mellan de kolumner jag vill ha u i recordsetet?

får nu följande felmeddelande...

Microsoft JET Database Engine error '80040e14' 

Syntax error. in query expression 'nvl((select max(\[date\] from t_threads where answerid = t.threadid) ,\[date\]) , author, date, subject from t_threads t order by 1 desc'. 

/forumdisplay.asp, line 26

Permalänk: https://www.webforum.nu/p/1383283

## #11 — Rikard, 2004-07-07T20:58Z

Hej brorsan. :)
Jepp, det ska vara *t order* \- med mellanrum. Det det egentligen står är:
"from t_threads as t"

t är bara ett substitut för t_threads - t.ex. *t.threadid* skulle lika gärna kunna skrivas t_threads.threadid. Men! Genom att göra som LarsG föreslår så skapar man ett alias (t) för tabellen (t_threads).

Permalänk: https://www.webforum.nu/p/1383315

## #12 — Rikard, 2004-07-07T21:06Z

Kan du skriva ut SQL-satsen?
(Response.Write SqlListThread)

Permalänk: https://www.webforum.nu/p/1383322

## #13 — lillebror, 2004-07-07T21:10Z

SQL-sats: select nvl((select max(\[date\] from t_threads where answerid = t.threadid) ,\[date\])) , author date subject from t_threads t order by 1 desc 
Microsoft JET Database Engine error '80040e14' 

Syntax error. in query expression 'nvl((select max(\[date\] from t_threads where answerid = t.threadid) ,\[date\]))'. 

/forumdisplay.asp, line 26

Permalänk: https://www.webforum.nu/p/1383323

## #14 — Rikard, 2004-07-07T21:13Z

En gissning, då jag är osäker på vad nvl är, är att ta bort en av de första parenteserna.

```
select nvl(select max([date] from t_threads
where answerid = t.threadid) ,[date]) , <kolumner>
from t_threads t
order by 1 desc
```

Permalänk: https://www.webforum.nu/p/1383326

## #15 — lillebror, 2004-07-07T21:16Z

Nu ser det ut som följer...

SQL-sats: select nvl(select max(\[date\] from t_threads where answerid = t.threadid) ,\[date\]) , author from t_threads t order by 1 desc 
Microsoft JET Database Engine error '80040e14' 

Syntax error. in query expression 'nvl(select max(\[date\] from t_threads where answerid = t.threadid) ,\[date\])'. 

/forumdisplay.asp, line 27

Permalänk: https://www.webforum.nu/p/1383327

## #16 — LarsG, 2004-07-07T21:25Z

Nej, det skall vara två ((.

Däremot så heter funktionen nz och inte nvl.

Permalänk: https://www.webforum.nu/p/1383334

## #17 — lillebror, 2004-07-07T21:32Z

ok...ska pröva med det...:)

Permalänk: https://www.webforum.nu/p/1383337

## #18 — lillebror, 2004-07-07T21:37Z

Nu får jag fel i följande del av uttrycket...

Microsoft JET Database Engine error '80040e14' 

Syntax error. in query expression 'nz(select max(\[ThreadPosted\] from t_threads where answerid = t.threadid) ,\[ThreadPosted\])'. 

/forumdisplay.asp, line 29

Permalänk: https://www.webforum.nu/p/1383341

## #19 — LarsG, 2004-07-07T21:49Z

```
nz((select max([ThreadPosted] from t_threads where answerid = t.threadid) ,[ThreadPosted])'
```

Permalänk: https://www.webforum.nu/p/1383344

## #20 — lillebror, 2004-07-07T21:58Z

Nu använder jag denna kod men får fortfarande upp samma felmeddelande. Jag förstår inte vad som är felet...

```
SqlListThread = "SELECT nz((select max([ThreadPosted] from t_threads where answerid = t.threadid) ,[ThreadPosted]) ,author, subject from t_threads t order by 1 desc"
```

:OO

Permalänk: https://www.webforum.nu/p/1383350

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/106835-problem-med-sql-sats  
Nästa sida: https://www.webforum.nu/amne/databaser-sql/106835-problem-med-sql-sats/page2.md
