---
title: "Count Distinct mm"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/136978-count-distinct-mm"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Obbelix"
published: "2005-11-04T22:12:24.000Z"
updated: "2005-11-05T13:21:53.000Z"
replies: 8
views: 368
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/136978-count-distinct-mm"
---

# Count Distinct mm

## #1 — Obbelix, 2005-11-04T22:12Z

Hej.

Håller på med en nyhetsbrevs-"motor". Har delat upp det enligt följande:

```
[b]mail_addresses[/b]
id  |  mail_address

[b]groups[/b]
id  |  group_name

[b]group_rel[/b]
id  |  mail_id  |  group_id

[b]newsletters[/b]
id  |  caption  |  newstext osv...

[b]newsletter_rel[/b]
id  |  news_id  |  group_id
```

Man lägger alltså till mottagarna i en tabell, dessa kan sen ingå i flera grupper, därav tabellen "group_rel" som håller reda på id:t på grupper samt mottagaren.
Även själva nyhetsbreven ska gå att skicka till flera grupper och detta håller "newsletter_rel" reda på.

Om nu en mottagare ingår i, säg två grupper, och man ska skicka ut ett brev till just dessa två ska ju inte den behöva få brevet mer än en gång. Hur kan jag få ut "unika" mottagare med distinct utifrån ett id från "newsletters" tabellen? och kan man i samma fråga få ut antalet?
Använder en Accessdatabas till detta.

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

## #2 — Peter S, 2005-11-04T23:07Z

Någonting sådant här:

```
select distinct m.mail_address
  from newsletters n
inner
  join (
       newsletter_rel nr
inner
  join (
       groups g
inner
  join (
       group_rel gr
inner
  join mail_addresses m
    on m.id = gr.mail_id
       )
    on gr.group_id = g.id
       )
    on g.id = nr.group_id
       )
    on n.id = nr.news_id
 where n.id = <id>;
```

För att få ut det totala antalet, är nog det bästa att ställa en separat fråga.

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

## #3 — Obbelix, 2005-11-05T11:47Z

Denna funka ju fint, men hur blir count-frågan?
Har testat med följande, men får fel...

```
select count(distinct m.mail_address)
  from newsletters n
inner
  join (
       newsletter_rel nr
inner
  join (
       groups g
inner
  join (
       group_rel gr
inner
  join mail_addresses m
    on m.id = gr.mail_id
       )
    on gr.group_id = g.id
       )
    on g.id = nr.group_id
       )
    on n.id = nr.news_id
 where n.id = <id>;
```

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

## #4 — LarsG, 2005-11-05T12:11Z

Vad vill du räkna?
Vilket fel får du?

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

## #5 — Obbelix, 2005-11-05T12:25Z

Jag vill räkna hur många "unika" mottagare det kommer skickas till.
Får detta felmeddelande:

```
Syntax error (missing operator) in query expression 'COUNT(DISTINCT m.mail_address)'.
```

Tar jag bort "distinct" från frågan räknar den alla, men eftersom en mottagare kan finnas i flera grupper som det skickas till ska den ju bara räknas en gång.

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

## #6 — LarsG, 2005-11-05T12:34Z

Ja du använder ju access vilken inte tillåter count(distinct ...)

```
select count(*)
  from mail_addresses
 where id in
  (select mail_id
     from group_rel g join newsletter_rel n on g.group_id = n.group_id 
    where n.id = <id>)
```

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

## #7 — Obbelix, 2005-11-05T12:57Z

Njae.. den vill inte fungera. Borde det inte vara en join till eller nåt, för "n.id=\<id\>" kan jag ju inte använda då n.id syftar på tabellen newsletter_rel. Det id jag har är id:t för newsletters tabellen.

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

## #8 — LarsG, 2005-11-05T13:10Z

```
where n.news_id
```

Blev förvillad av alla id. Det är för övrigt helt onödigt att id-kolumnerna finns med i rel-tabellerna.

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

## #9 — Obbelix, 2005-11-05T13:21Z

Tusen tack!

alla id:n är en gammal ful ovana som jag har släpandes kvar.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/136978-count-distinct-mm
