---
title: "sätta villkor"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/11121-sätta-villkor"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Jörgen HP"
published: "2001-08-14T18:29:00.000Z"
updated: "2001-08-15T12:52:00.000Z"
replies: 9
views: 276
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/asp/11121-sätta-villkor"
---

# sätta villkor

## #1 — Jörgen HP, 2001-08-14T18:29Z

Hej!

En kodsnutt jag fått hjälp med innan:

```

strSQL = "select IntForumId, ForumUse, ForumName, ForumModerator, Orgthread, " & _
"count(distinct Orgthread) as threads, " & _
"count(*) as posts, " & _
"max([Date]) as lastdate, ForumName " & _
"from b1180.Debatt inner join b1180.Forum " & _
"on Debatt.ForumId = Forum.IntForumId " & _
"group by ForumName"
strConn = "DSN=MySQL; SERVER=; DATABASE=; UID=; PWD="
Set objConn = Server.CreateObject("ADOdb.Connection")
objconn.Open strConn
arrForum = objConn.Execute(strSQL).GetRows()
```

Hade tänkt räkna orginalinlägg med raden **count(distinct Orgthread) as threads** Orginalinlägg har orgthread=0 och svar har orghtread=1.
Men den verkar räka 1:or ibland och 0:or ibland. Kan jag på något sätt säga:

**count(distinct Orgthread) as threads where Orgthread=0** 

men raden ovan ger error, hur skriver jag?

mvh Jörgen

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

## #2 — @nders, 2001-08-14T18:31Z

är inte helt 100 på vad du är ute efter, men har du prövat att göra det med en subquery?

tror vi har diskuterat det, men är inte säker.

```
strSQL = "select IntForumId, ForumUse, ForumName, ForumModerator, Orgthread, " & _
" (select count(distinct Orgthread) as threads where Orgthread=0), " & _
...
...
```

mvh,

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

## #3 — jorgen, 2001-08-14T18:39Z

Hej!

Då får jag error:

SQLState: 42000
Native Error Code: 1064
\[TCX\]\[MyODBC\]You have an error in your SQL syntax near 'select count(distinct Orgthread) as threads where Orgthread=0), count(\*) as post' at line 1

/hundmagazine/forum/forum_default.asp, line 101 

Rad 101:

arrForum = objConn.Execute(strSQL).GetRows()

Varför då då?
mvh Jörgen

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

## #4 — @nders, 2001-08-14T18:43Z

det kan finnas flera orsaker. en av dem: jag kan ha gjort fel, det händer. jag kan ju som bekant inte mysql.

jag kastar nog in handduken på just det här nu, tyvärr. :)

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

## #5 — LarsG, 2001-08-14T18:51Z

Mysql, har vissa begränsningar. Det där, till exemepel, är en konstruktion som dom inte tillåter.

Jag har svårt att se hur du ska få ihop det i en fråga. (Ja, jag vet att jag har petat på frågan tidigare.)

Du får nog lägga 

```

select count(*) as posts from debatt
 where orgThread = 0
```

som en egen fråga.

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

## #6 — jorgen, 2001-08-14T20:12Z

Hej!

Eftersom jag bygger om forumet helt, jag jag lika bra slå på stort.

Hur lägger jag upp tabellstrukturen smartast så att det blir enkelt att räkna:

Antal inlägg totalt, antal inlägg/avdelning, trådar totalt, trådar/avdelning, antal svar/inlägg mm.

Min tabell struktur ser nu ut enligt följande:

\#
\# Tabell struktur för tabell 'Forum'
\#

CREATE TABLE \`Forum\` (
  \`ForumId\` tinyint(2) NOT NULL auto_increment,
  \`ForumUse\` char(200) NOT NULL default '',
  \`ForumName\` char(100) NOT NULL default '',
  \`ForumModerator\` char(50) NOT NULL default '',
  PRIMARY KEY  (\`IntForumId\`)
) TYPE=MyISAM;

\#
\# Tabell struktur för tabell 'Debatt'
\#

CREATE TABLE \`Debatt\` (
  \`MessId\` int(11) NOT NULL auto_increment,
  \`Ip\` varchar(30) default NULL,
  \`Subject\` varchar(100) NOT NULL default '',
  \`Comment\` text NOT NULL,
  \`Date\` datetime default NULL,
  \`Replies\` tinyint(3) default NULL,
  \`Orgthread\` tinyint(1) default '1',
  \`View\` smallint(14) default '0',
  \`AnvId\` smallint(14) default NULL,
  \`ReplyId\` int(11) default '0',
  \`ForumId\` tinyint(2) default NULL,
  
  PRIMARY KEY  (\`MessId\`)
) TYPE=MyISAM;

Forumet är av denna typen och inte ett trådforum. Jag har olika avdelningar.

Hela Forumet handlar om hundar.

Sedan finns det n antal underavdelningar som är inriktade på vissa specialtyper, som tex tävling, tjänstehundar mm.

Mvh Jörgen

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

## #7 — jorgen, 2001-08-14T23:32Z

Hej igen...

Nu ser SQL frågorna ut så här:

```

strSQL ="SELECT IntForumId, ForumUse, ForumName, ForumModerator, " & _
"count(*) as Posts, " & _
"max([Date]) as lastdate, ForumName " & _
" FROM b1180.Forum " & _
"INNER JOIN b1180.Debatt ON b1180.Forum.IntForumId = b1180.Debatt.ForumId " & _
"GROUP BY ForumName"
Set RS = strConn.Execute(strSQL)

SQL ="SELECT COUNT(Orgthread) AS Threads FROM b1180.Debatt WHERE Orgthread=0 GROUP BY ForumId "
Set RS2 = strConn.Execute(SQL)
```

Den räknar rätt antal på både Treads och Posts i första avdelningen, med i de nästkommande forumavdelningarna räknar den fel på Threads.

Hela koden ser nu ut enligt nedan:

Varför vill den inte räkna rätt?
Har tom prövar lägga in SQL fråga 2 inuti loopen, men blev inte bättre.

mvh Jörgen

```
<%
strSQL ="SELECT IntForumId, ForumUse, ForumName, ForumModerator, " & _
"count(*) as Posts, " & _
"max([Date]) as lastdate, ForumName " & _
" FROM b1180.Forum " & _
"INNER JOIN b1180.Debatt ON b1180.Forum.IntForumId = b1180.Debatt.ForumId " & _
"GROUP BY ForumName"
Set RS = strConn.Execute(strSQL)

SQL ="SELECT COUNT(Orgthread) AS Threads FROM b1180.Debatt WHERE Orgthread=0 GROUP BY ForumId "
Set RS2 = strConn.Execute(SQL) 

%>

<table cellspacing="0" cellpadding="0" border="0" width="760" align="center"> 
<tr><td bgcolor="#778899"> 

<table border="0" cellspacing="1" cellpadding="6" width="760" align="center"> 
<tr>
<td width="4%">&nbsp;</td> 
<td width="40%"><p class="rubrik">Forum</p></td> 
<td width="6%" align="center"><p class="rubrik">Trådar</p></td>
<td width="6%" align="center"><p class="rubrik">Inlägg</p></td> 
<td width="17%" align="center"><p class="rubrik">Senaste inlägg</p></td> 
<td width="20%" align="center"><p class="rubrik">Debattledare</p></td>

</tr> 

<tr> 
<td colspan="6" bgcolor="#dededf"><p><b>Hundforum</b></p></td> 
</tr> 

<% Do while not RS.EOF %>

<tr> 

<td bgcolor="#dededf" align="center"><img src="ninlagg.gif" alt="Ikon"></td>
<td bgcolor="#eeeeee"><p>
<a href="default.asp?Forum=<%=RS("IntForumId")%>"><%=RS("ForumName")%></a>

<br><%=RS("ForumUse")%></p></td>

<td bgcolor="#dededf" align="center"><p><%=RS2("Threads")%></td>
<td bgcolor="#eeeeee" align="center"><p><%=RS("posts")%></td>
<td bgcolor="#dededf"><p><%=SweDateLong(RS("lastdate"))%></p></td>
<td bgcolor="#eeeeee"><p><b><%=RS("ForumModerator")%></b></p></td>
</tr> 

<%

RS.movenext
loop

%>
```

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

## #8 — PatrikB, 2001-08-15T05:31Z

> Eftersom jag bygger om forumet helt, jag jag lika bra slå på stort.
>
> Hur lägger jag upp tabellstrukturen smartast så att det blir enkelt att räkna:

Själv skulle jag nog bygga forumet med dessa tabeller

\- Kategorier

\- Forum

\- Inlagg

\- Svar

\- Medlemmar

cya,
PatrikB

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

## #9 — LarsG, 2001-08-15T07:46Z

När jag vaknade i morse så kom jag faktiskt på att Mysql har stöd för case (Jag är så van vid att dom inte följer standard ;) )

```
strSQL = "select IntForumId, ForumUse, ForumName, ForumModerator, Orgthread, " & _
"sum(case Orgthread when 0 then 1 else 0 end ) as threads, " & _
"count(*) as posts, " & _
"max([Date]) as lastdate, ForumName " & _
"from b1180.Debatt inner join b1180.Forum " & _
"on Debatt.ForumId = Forum.IntForumId " & _
"group by ForumName"
```

För övrigt så håller jag med PatrikB

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

## #10 — jorgen, 2001-08-15T12:52Z

Tackar och bockar!

Fördelen med den tabellstrukturen är att den är överskådlig samt lätt att hämta data ifrån.

Nackdelen är att en del uppgifter får förekomma i flera eller alla tabellerna.

Så frågan man kan ställa sig själv är:

Vad väljer man?

En något tyngre databas eller något svårare kodning. :)

mvh Jörgen

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/11121-sätta-villkor
