---
title: "Hjälp med sortering av trådar i forum"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/131403-hjälp-med-sortering-av-trådar-i-forum"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "lillebror"
published: "2005-07-14T10:52:32.000Z"
updated: "2005-07-14T11:32:15.000Z"
replies: 8
views: 377
page: 1
pages: 1
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/131403-hjälp-med-sortering-av-trådar-i-forum"
---

# Hjälp med sortering av trådar i forum

## #1 — lillebror, 2005-07-14T10:52Z

Hej,

Jag håller på och utvecklar ett eget forum. Har kommit en bra bit på väg. Nu har jag dock ett litet problem när jag sorterar trådarna. Trådarna sorteras och visas inuläget efter det senaste svar en tråd har fått vilket presenteras som "senaste inlägg" i kolumnen med datum och vem som har skrivit det. Så långt fungerar det bra. 

Problemet börjar när jag skapar en ny tråd. Då har denna tråd ej några underliggande svar var på denna tråd kommer hamna längst ned i listan när den istället borde ligga högst upp i listan. (**se bifogad bild**)

Här är min SQL-sats:

```
$sqlSelect = "SELECT threadID, subject, content, hits, posted, posterID, forumID,
(SELECT username FROM tblMember WHERE memberID = posterID) AS username,
(SELECT COUNT(t2.threadreplyID) FROM tblForumThreadReply AS t2 WHERE t2.threadID = t1.threadID) AS replynumber,
(SELECT DATE_FORMAT(t5.posted, '%Y-%m-%d %H:%i:%s') FROM tblForumThreadReply AS t5 WHERE t5.threadID = t1.threadID AND t1.forumID = $ID ORDER BY t5.posted DESC LIMIT 1) AS lastpost, 
(SELECT (SELECT t8.username FROM tblMember AS t8 WHERE t8.memberID = t5.posterID) 
FROM tblForumThreadReply AS t5 WHERE t5.threadID = t1.threadID AND t1.forumID = $ID ORDER BY t5.posted DESC LIMIT 1) AS usernamelastreply,
(SELECT t5.posterID FROM tblForumThreadReply AS t5 WHERE t5.threadID = t1.threadID AND t1.forumID = $ID ORDER BY t5.posted DESC LIMIT 1) AS posterIDlastreply
	FROM tblForumThread AS t1
	WHERE forumID = $ID ORDER BY lastpost DESC";
```

Hoppas någon förstår vad jag har gjort och har något tips på hur man kan lösa detta. Går det att skriva IF-satser i SQL-frågan. Det kunde kanske vara ett alternativ att använda en sådan :OO 

En kort fråga till. När jag skapar ett alias för en tabell, är den global i HELA SQL-satsen eller enbart i den nästlande satsen som den befinner sig i?

Bilagor:

- [forumdisplay.jpg](https://www.webforum.nu/a/6991.jpg)

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

## #2 — LarsG, 2005-07-14T10:59Z

```
coalesce(
(SELECT DATE_FORMAT(max(t5.posted), '%Y-%m-%d %H:%i:%s') 
FROM tblForumThreadReply AS t5 
WHERE t5.threadID = t1.threadID 
AND t1.forumID = $ID ) , posted) AS lastpost
```

Vänligen formattera frågan så att man slipper scrollning i sidled.

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

## #3 — lillebror, 2005-07-14T11:06Z

Denna rad i min SQL-sats:

```
(SELECT DATE_FORMAT(t5.posted, '%Y-%m-%d %H:%i:%s') FROM tblForumThreadReply AS t5 WHERE t5.threadID = t1.threadID AND t1.forumID = $ID ORDER BY t5.posted DESC LIMIT 1) AS lastpost
```

Ersätts med:

> **LarsG skrev:**
>
> ```
> coalesce(
> (SELECT DATE_FORMAT(max(t5.posted), '%Y-%m-%d %H:%i:%s') 
> FROM tblForumThreadReply AS t5 
> WHERE t5.threadID = t1.threadID 
> AND t1.forumID = $ID ) , posted) AS lastpost
> ```

Korrekt uppfattat? :) Sen exakt vad gör funktionen coalesce()? :OO

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

## #4 — @nders, 2005-07-14T11:10Z

coalesce(uttryck1, uttryck2) 

Om uttryck1 är null väljs uttryck2, annars uttryck1. (Hmm, gick det där att förstå?)

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

## #5 — lillebror, 2005-07-14T11:16Z

Jag kan bara meddela att det rockar fett nu! :e

Har en liten fråga till. I det genererade fältet **AS usernamelastreply** får jag ut den sista som har svarat i en tråd. Om tråden ännu inte innehåller något svar, kan jag få användarnamnet från den som har skapat huvudtråden på något liknande sätt som du gjorde med sorteringen innan?

Bilagor:

- [forumdisplay_ver2.jpg](https://www.webforum.nu/a/6993.jpg)

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

## #6 — lillebror, 2005-07-14T11:18Z

> **@nders skrev:**
>
> coalesce(uttryck1, uttryck2) 
> 
> Om uttryck1 är null väljs uttryck2, annars uttryck1. (Hmm, gick det där att förstå?)

Jadå. Alltså, om det inte finns några replies i det första uttrycket så används posted för själva tråden istället för posted i svaret...

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

## #7 — LarsG, 2005-07-14T11:19Z

En detalj, att du har med detta i subselecten är överflödigt

```
AND t1.forumID = $ID
```

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

## #8 — lillebror, 2005-07-14T11:28Z

> **lillebror skrev:**
>
> I det genererade fältet **AS usernamelastreply** får jag ut den sista som har svarat i en tråd. Om tråden ännu inte innehåller något svar, kan jag få användarnamnet från den som har skapat huvudtråden på något liknande sätt som du gjorde med sorteringen innan?

coalesce() löste även detta problem :)

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

## #9 — lillebror, 2005-07-14T11:32Z

Suveränt. Tack för hjälpen! Trodde jag kört fast när jag stötte på dessa problem. Det är tur att det finns kompetenta människor som ni att rådfråga :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/131403-hjälp-med-sortering-av-trådar-i-forum
