---
title: "Räkna kommentarer på en nyhet"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/132549-räkna-kommentarer-på-en-nyhet"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "MagnusJ"
published: "2005-08-10T13:53:05.000Z"
updated: "2005-08-11T17:45:42.000Z"
replies: 16
views: 612
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/dotnet/132549-räkna-kommentarer-på-en-nyhet"
---

# Räkna kommentarer på en nyhet

## #1 — MagnusJ, 2005-08-10T13:53Z

Hej

Jag undrar lite över hur man kan räkna ut hur många kommentarer det finns till en nyhet. 

Jag listar alla nyheter på första sidan och där ska man se hur många kommentarer nyheten har. 

Jag har byggt upp databasen så att det är en tabell för nyheterna och en annan tabell för kommentarerna. Tabellen med kommentarerna har en kolumn som heter newsID där id:et för nyheten är och på så sätt ska jag koppla ihop så att rätt kommentar är till rätt nyhet. 

Jag använder mig av access. Jag undrar lite över hur man ska fixa det ifall det går att fixa i sql kopplingen när man hämtar inläggen. Fast det kanske inte går, men vet någon hur man kan göra?

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

## #2 — Peter S, 2005-08-10T13:57Z

Hur ser SQL-frågan ut nu?

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

## #3 — Glitter, 2005-08-10T14:05Z

Du kan ju loopa ut alla nyheter och i den loopen så gör du en fråga som hämtar antalet kommentarer från det idt som den är på i loopen...

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

## #4 — P, 2005-08-10T18:20Z

Om du fyller ditt resultat till ett dataset/datatable så hittar du antalet rader, om det nu är samma som antalet kommentarer i dt.Rows.Count etc

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

## #5 — MagnusJ, 2005-08-10T23:33Z

Så här ser min sql-fråga ut som jag har nu, men den hämtar bara alla nyheter. 

```
public DataSet GetEntrys() 
{
		try
		{
			string strSQL = "SELECT * FROM tbl_news ORDER BY nID DESC";
			return GetNewDataSet(strSQL);
		}
		catch (Exception)
		{
			throw;
		}
}
```

Går det på nått sätt göra en sql-fråga där man innerjoinar tbl_news_comments i frågan sedan räknar man antalet poster där kolumnen newsID stämmer överens med nyhetes ID. 

Jag är inte så jätte vass på sql-frågor, så jag vet inte riktigt hur man ska göra den frågan, om det äns går.

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

## #6 — SebbeJ, 2005-08-11T11:04Z

Jag gör följande på min hemsida för att plocka ut nyhetsid, rubrik, datum, innehåll, skribentid, skribentnamn och antal kommentarer från de 10 senaste nyheterna:

"select n.nid, n.nHeadline, n.ndate, n.ncontent, u.uuserid, u.uname, count(c.cid) as comments from tblalternianews n left join tblalterniausers u on (n.nwriterid=u.uUserid) left join tblalterniacomments c on (c.cNewsId=n.nid) group by n.nid order by n.nid desc LIMIT 10"

där n. = alias för nyhetstabellen, u. = alias för användartabellen och till sist c. = alias för kommenteringstabellen.

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

## #7 — Pace, 2005-08-11T12:31Z

Liten renskrivning av SebbeJ:s kod:

```
   SELECT news.*, COUNT(comments.*) AS comments
     FROM news
LEFT JOIN comments ON (comments.newsid = news.newsid)
 GROUP BY news.newsid
```

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

## #8 — SebbeJ, 2005-08-11T14:12Z

Använd \_aldrig\_ select \*, men din renskrivning visar iaf syftet med sql-satsen tydligare.

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

## #9 — Mc Fetto, 2005-08-11T15:54Z

> **SebbeJ skrev:**
>
> Använd \_aldrig\_ select \*, men din renskrivning visar iaf syftet med sql-satsen tydligare.

Varför inte?  :q

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

## #10 — MagnusJ, 2005-08-11T15:56Z

Jag får det här felmeddelandet: 

Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'nHeadline'.

Kod:
string strSQL = "SELECT tbl_news.nID, tbl_news.nHeadline, tbl_news.nContent, COUNT(tbl_news_comments.cnID) AS tbl_news_comments FROM tbl_news LEFT JOIN tbl_news_comments ON (tbl_news_comments.cnID = tbl_news.nID) GROUP BY tbl_news.nID ORDER BY tbl_news.nID desc";

Vad kan det bero på? 
Hur gör man för att dela upp frågan på flera rader? 

Sedan undrar jag vad man ska skriva för att få ut hur många kommentarer det är på aspx-sidan. Lägger sig resultatet av Count i någon speciellsträng?

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

## #11 — Peter S, 2005-08-11T15:59Z

> **Mc Fetto skrev:**
>
> > **SebbeJ skrev:**
> >
> > Använd \_aldrig\_ select \*, men din renskrivning visar iaf syftet med sql-satsen tydligare.
>
> Varför inte?  :q

Antag att du modifierar tabellen genom att, säg, lägga till en kolumn och att denna kolumn inte är av intresse i SQL-frågan. Då måste du ersätta '\*' med endast de önskade kolumnerna, vilket kan bli en hel del (framför allt om tabellen är onormaliserad). Dessutom kanske ändringarna måste göras på flera ställen.

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

## #12 — Mc Fetto, 2005-08-11T16:10Z

> **Peter S skrev:**
>
> > **Mc Fetto skrev:**
> >
> > > **SebbeJ skrev:**
> > >
> > > Använd \_aldrig\_ select \*, men din renskrivning visar iaf syftet med sql-satsen tydligare.
> >
> > Varför inte?  :q
>
> Antag att du modifierar tabellen genom att, säg, lägga till en kolumn och att denna kolumn inte är av intresse i SQL-frågan. Då måste du ersätta '\*' med endast de önskade kolumnerna, vilket kan bli en hel del (framför allt om tabellen är onormaliserad). Dessutom kanske ändringarna måste göras på flera ställen.

Det är sant, det jag reagerade på var att man Alldrig ska använda sig utav det. Alltså är det en smaksak ;)

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

## #13 — Peter S, 2005-08-11T16:19Z

Ja, "aldrig" kanske var att ta i. Vill man alltid ha med samtliga kolumner är det ju bara att köra på.

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

## #14 — Peter S, 2005-08-11T16:20Z

MagnusJ, testa denna:

```
select n.nid, n.nheadline, n.ncontent, iif(c.total is null, 0, c.total) as comments 
from tbl_news n 
left join (select cnid, count(*) as total 
    from tbl_news_comments 
    group by cnid) as c 
  on n.nid = c.cnid;
```

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

## #15 — MagnusJ, 2005-08-11T16:40Z

Tack, det där verkar fungera. 

Hur gör man för att skriva ut sql-frågan på flera rader? Eller går det bara i SP? 

Men vad ska jag skriva i .aspx sidan för att veta hur många kommentarer nyheten har?

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

## #16 — Peter S, 2005-08-11T16:52Z

Nu kan jag inte ASP.NET, men delar man inte upp en sträng på flera rader så här:

```
"..." & _
"..."
```

Alternativt:

```
"..." + 
"..."
```

Antalet kommentarer hämtar du på samma sätt som du hämtar en "vanlig" kolumn. I den kod jag postade heter denna kolumn *comments*.

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

## #17 — MagnusJ, 2005-08-11T17:45Z

Det fungerade, tack så mycket för hjälpen!

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/132549-räkna-kommentarer-på-en-nyhet
