---
title: "Hämta allt från en tabell med count?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/184016-hämta-allt-från-en-tabell-med-count"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "voigtann1"
published: "2010-07-05T08:18:14.000Z"
updated: "2010-07-05T12:20:50.000Z"
replies: 10
views: 471
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/184016-hämta-allt-från-en-tabell-med-count"
---

# Hämta allt från en tabell med count?

## #1 — voigtann1, 2010-07-05T08:18Z

Hej,

jag försökte lösa ett problem som jag tyckte kändes enkel från början, men fastnade längst vägen.

Jag har en access databas med följande struktur:
tag

- TagId - Räknare
- Tag - Text

tagpost

- TagId - tal
- PostId - Tal

Jag vill få ut allt ifrån tag men även en count där det är 1 eller 0 om PostId är ett specifikt tal

PostId = 1 så kanske vi har TagId 1 och 2, då vill jag få ut ett resultat som säger att:
tag.TagId
tag.Tag
TagCount(?) (1/0)

Gå detta att göra med access?

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

## #2 — Peter S, 2010-07-05T08:45Z

Så här?

```
select t.tagid, t.tag, iif(p.postid = <my_special_number>, 1, 0) as tagcount
from tag t inner join tagpost p ...
```

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

## #3 — Peter S, 2010-07-05T08:45Z

Så här?

```
select t.tagid, t.tag, iif(p.postid = <my_special_number>, 1, 0) as tagcount
from tag t inner join tagpost p ...
```

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

## #4 — voigtann1, 2010-07-05T08:56Z

Se där, nästan helt korrekt, verkar dock för de där iif-frågan stämmer så bli det 1 men den kör även en 0, så jag få dubbletter:

```
TagId	TagName	tagcount
1	Tag1	0
1	Tag1	1
2	Tag2	0
2	Tag2	1
3	Tag3	0
4	Tag4	0
```

Dock körde jag en LEFT JOIN, då om jag kör en vanlig join så få jag bara ut tag1 och tag2 två gånger. Kan bero på att man har andra idn än bara \<my_special_number\> i tagpost tabellen(?)

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

## #5 — Peter S, 2010-07-05T09:36Z

De två första raderna i resultatet innebär att tagid = 1 är kopplad till två poster i tagposttabellen: en av posterna har postid = \<my_special_number\> och den andra posten har postid = \<något_annat\>.

Kör du en left join enligt "tag left join tagpost" så får du ut taggar som inte är kopplade till poster. Med en inner join får du bara ut taggar som har en postkoppling. Sedan kanske du även har med något filter i where-satsen?

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

## #6 — voigtann1, 2010-07-05T09:42Z

```
SELECT t.TagId, t.TagName, iif(p.BlogId = 24, 1, 0) as tagcount
FROM  Tag AS t inner join PostsTag AS p ON p.TagId = t.TagId;
```

Och få resultatet:

```
TagId	TagName	tagcount
1	Tag1	0
1	Tag1	1
2	Tag2	0
2	Tag2	1
```

Men jag ha 4st "TagName"
Det önskade resultat jag vill ha är

```
TagId	TagName	tagcount
1	Tag1	1
2	Tag2	1
3	Tag3	0
4	Tag4	0
```

TagCount kan också vara null, bara att jag vet att om taggen finns med eller inte för presentation

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

## #7 — Peter S, 2010-07-05T11:34Z

Aha  :)

Blir detta bättre månne:

```
SELECT 
	t.TagId, t.TagName, iif(p.BlogId is null, 0, 1) as tagcount
FROM  
	Tag AS t left join PostsTag AS p 
	ON 
	p.TagId = t.TagId and p.BlogId = 24
```

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

## #8 — nitro2k01, 2010-07-05T12:04Z

Vet inte om Access faktiskt klarar av COUNT och GROUP BY, men vad sägs om...

```
SELECT t.TagId, t.TagName, COUNT(p.BlogId) AS tagcount
FROM Tag AS t 
LEFT JOIN PostsTag AS p ON p.TagId = t.TagId AND p.BlogId = 24
GROUP BY t.TagId
```

Det allra bästa sättet vore dock att cacha hur många gånger en tag används i Tag-tabellen, för prestandans skull. Det beror ju dock på tabellens storlek och antalet besökare om det är värt besväret.

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

## #9 — voigtann1, 2010-07-05T12:08Z

@Peter S Får:

> Join expression not supported.

 (and p.BlogId = 24)

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

## #10 — nitro2k01, 2010-07-05T12:12Z

```
LEFT JOIN PostsTag AS p ON (p.TagId = t.TagId AND p.BlogId = 24)
```

...kanske?

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

## #11 — voigtann1, 2010-07-05T12:20Z

Usch så trög jag är, fungera kanon

båda frågorna fungera från nitro2k01 och Peter S

> Det allra bästa sättet vore dock att cacha hur många gånger en tag används i Tag-tabellen, för prestandans skull. Det beror ju dock på tabellens storlek och antalet besökare om det är värt besväret.

Det är i admin jag vill lista alla taggar och se vilka som är markerade på en specifikt tråd, är inte intresserad över hur många gånger en tagg har använts (än) men det har jag i åtanke redan ;)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/184016-hämta-allt-från-en-tabell-med-count
