---
title: "Hjälp med avancerad sql-sats (?)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/80979-hjälp-med-avancerad-sql-sats"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "jimpa"
published: "2003-07-01T09:36:53.000Z"
updated: "2003-07-02T14:21:42.000Z"
replies: 5
views: 281
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/80979-hjälp-med-avancerad-sql-sats"
---

# Hjälp med avancerad sql-sats (?)

## #1 — jimpa, 2003-07-01T09:36Z

Håller på med ett kategoriserat forum.
Har kollat runt lite i andra trådar på wf och fått den uppfattningen att alla inlägg ska ligga i samma tabell oavsett om inlägget är en ny tråd eller ett svar till befintlig tråd.

Nu till frågan:
Hur ska min SQL-sats se ut för att lista alla kategorier med tillhörande forum, alla moderators för resp. forum, antal inlägg, visningar (adderar alla i tabellen Threads för resp. forumID) samt visa senaste inlägget i resp. forum?
Med andra ord vill jag kunna skriva ut så som det är här på wf. :)

Har byggt upp min access db. så här:

Categories
\- CatID
\- cName
\- cDescription

Forums
\- ForumID
\- fCatID
\- fName
\- fDescription

Moderators
\- ModeratorID
\- mForumID
\- mMemberID

Threads
\- ThreadID
\- tForumID
\- tCountTopics
\- tCountViews
\- tSubject
\- tStartByMemberID

Topics
\- ttTopicID
\- ttForumID
\- ttThreadID
\- ttMemberID
\- ttParentID \<-- 0 = Ny tråd, annars ska parentID vara förälderns ttTopicID ?
\- ttDte
\- ttSubject
\- ttMessage
\- ttIcon

Members
\- MemberID
\- mNickName
\- mEmail
\- mPassword

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

## #2 — m_soderlund, 2003-07-01T09:43Z

Uj uj uj, det är mycket du begär. Omöjligt att hålla reda på allt. :(
Har du lite startkod?

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

## #3 — jimpa, 2003-07-01T09:46Z

Startkod coming up :)

```
SQL = "Select...
```

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

## #4 — m_soderlund, 2003-07-01T10:28Z

Hehe,  :e . Jag kan börja lite smått då..
Till att börja med - vad har threads-tabellen för funktion?

Jag nog inte ha en egen tabell för kategorierna eller forumen. Om man skippar Categories- och Forums-tabellen kan man i huvudtabellen (där i så fall alla trådar och svar finns) ha en kolumn som heter exempelvis *Category* samt en kolumn som heter *Forum*, i vilka man lagrar kategorin samt respektive forum. Att hämta data från denna tabell vore i så fall ganska simpelt, och vi säger att tabellen ser ut så här:

topics
\-  ttTopicID 
\- ttForumID 
\- ttCategory
\- ttMemberID 
\- ttParentID \<-- 0 = Ny tråd, annars ska parentID vara förälderns ttTopicID? 
\- ttDte 
\- ttSubject 
\- ttMessage 
\- ttIcon 

Sen kan man med en SQL-sats plocka ut lite grejor, ungefär så här kanske:

```
SELECT a.ttTopicID,a.ttSubject,a.ttIcon,a.ttDte,
(SELECT Count(b.ttParentID) FROM topics b WHERE a.ttTopicID=b.ttTopicID) AS replies
FROM topics a WHERE ttForumID=2 AND ttCategory='ASP/VBScript'
```

Nu kanske min kod verkar lite jobbig, den gör en JOIN på samma tabell, och (förhoppningsvis) räknar antalet svar som är knutna till aktuell ttTopicID som skrivs ut. Hoppas det här ger en liten start. :D

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

## #5 — jimpa, 2003-07-01T18:42Z

Nej jag tror inte att jag vill tabort tabellen för varken Katergorin eller Forum, det måste gå att lösa ändå.

Okey, så här långt har jag kommit:

Så här ser min SQL ut just nu:

```php
SQL = "SELECT fCategories.*, Forums.*, fModerators.*, Members.* FROM (((fCategories 
LEFT JOIN Forums ON fCategories.CatID = Forums.fCatID) 
LEFT JOIN fModerators ON (Forums.ForumID = fModerators.mForumID)) 
LEFT JOIN Members ON (fModerators.mMemberID = Members.MemberID)) 
ORDER BY fCategories.cName, Forums.fName ASC"
```

Skriver ut med GetRows så här:

```php
arrRecs = RS.GetRows() 
TmpID = 0
	
   for i = 0 to ubound(arrRecs,2)
       'KOLLAR SÅ ATT INTE KATEGORIN HAR SKRIVITS UT. OM INTE SKRIVER UT NAMNET PÅ KATEGORIN
              if TmpID <> clng(arrRecs(0,i)) then
       	Response.Write "<b>" & arrRecs(1,i) & "</b><br>"
			TmpID = clng(arrRecs(0,i))
			
			        'LOOPAR OCH SKRIVER UT NAMNEN PÅ ALLA FORUM  FÖR RESP. KATEGORI
'!!! HÄR NÅGONSTANS MÅSTE JAG LOOPA IGENOM ALLA MODERATORS OCH
SEDAN SPARA ALLA MODERATORS NAMN I STRÄNG INNAN UTSKRIFTEN FÖR FORUMET!!!
FÖR ATT FÖRHINDRA ATT FORUMET SKRIVS UT MER ÄN EN GÅNG
          for j = i to ubound(arrRecs,2)
              if TmpID <> clng(arrRecs(4,j)) then exit for
       	Response.Write "Forum namn: " & arrRecs(5,j) & " , Moderator: " & arrRecs(15,j) & "<br>"
          next
          end if
   next
End If
```

**Problem 1**
Om det finns fler än en moderator för ett forum skrivs Forumet ut lika många ggr. som det finns moderators.
Typ:
\---------- 
Kategori1 
\---------- 
Forumnamn1 . ModeratorNisse 
Forumnamn1 - ModeratorKalle 
Forumnamn1 - ModeratorLasse 

Jag vill att det skrivs ut så här:
Kategori1 
\---------- 
Forumnamn1 . ModeratorNisse,ModeratorKalle,ModeratorLasse

Jag har sökt och hittade denna [tråd](http://www.webforum.nu/showthread.php?s=&postid=124412#post124412) med precis samma problem :)
Men självklart fanns det ingen enkel kod att leka med, men dock en förklaring hur man kan gå tillväga.
Är det någon som förstår och kan visa hur koden ska se ut för att få utskriften som jag vill ha det?

**Problem 2**
Jag har redan startat en tråd i ASP-forumet när det gäller utskriften av SQL-satsen, senare kom jag på att jag jag har problem med SQL-satsen och startade denna tråd.
Nu är jag lite förvirrad och vet inte vilken tråd som jag ska fortsätta posta i, men jag fortsätter här eftersom jag har postat mina tabeller i db här.

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

## #6 — jimpa, 2003-07-02T14:21Z

Ingen som kan?

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/80979-hjälp-med-avancerad-sql-sats
