---
title: "Count, räkna ihop från flera olika tabeller"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/161153-count-räkna-ihop-från-flera-olika-tabeller"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Php"
published: "2007-06-05T21:13:47.000Z"
updated: "2007-06-06T10:17:17.000Z"
replies: 5
views: 733
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/161153-count-räkna-ihop-från-flera-olika-tabeller"
---

# Count, räkna ihop från flera olika tabeller

## #1 — Php, 2007-06-05T21:13Z

Hej,
Det är så att jag vill räkna ihop antalet poster, som tillhör en viss användare, från 5 olika tabeller.

Något i den här stillen:

Antalet poster från:

Tabell 1: members
Argument: where refer = '800'
\+
Tabell 2: book
Argument: where member_id = '800'
\+
Tabell 3: bookc
Argument: where p_id = '800'
\+
Tabell 4: games
Argument: where p_id = '800'
\+
Tabell 5: messages
Argument: where s_id = '800'
\+
Till sist vill jag till summan addera ett värde, som hämtas från fältet "logins" i tabellen "members".

Nu är min fråga om det finns något enkelt sätt att direkt vid SQL satsen räkna ihop denna summan?

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

## #2 — emission, 2007-06-05T21:48Z

Det finns måååånga sätt, lite beroende på DBMS...

DISTINCT-count (kräver att det finns en unik nyckel i varje tabell)

```
select m.logins + count(distinct r.nyckel)+count(distinct b.nyckel)+count(distinct bc.nyckel)+count(distinct g.nyckel)+count(distinct msg.nyckel)
from members m
left outer join members r on m.id=r.refer
left outer join book b on m.id=b.member_id
left outer join bookc bc on m.id=bc.p_id
left outer join games g on m.id=g.p_id
left outer join messages msg on m.id=msg.s_id
```

Subselect

```

select m.logins + (select count(*) FROM book WHERE member_id=m.id) + (select count(*) FROM bookc WHERE p_id=m.id)  osv...
from members m
```

Derived table + UNION

```
select sum(d.countval) from
(
select logins as countval from members where id=800
union
select count(*) FROM book WHERE member_id=800
union
....
)
```

..och ett par till varianter

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

## #3 — Php, 2007-06-06T09:14Z

Jag försöker använda union, men den printar bara ut -1!

select sum(d.countval) from
(
select logins as countval from members where id=800
union
select count(\*) FROM book WHERE member_id=800
)

$antal = mysql_affected_rows();
echo"$antal";

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

## #4 — @nders, 2007-06-06T09:35Z

Du ska inte använda *mysql_affected_rows()*, inga poster *påverkas* av en select-fråga. Hämta ut datat på vanligt sätt (det kan alltså vara vettigt att sätta alias på det du ska hämta ut så du har något att referera till i utskriften i php-koden). 

```
select sum(d.countval) [b]as min_summa[/b] from...
```

Om du ska referera till d.countval i din SQL-fråga måste du nog också ange d som alias på din derived table.

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

## #5 — Php, 2007-06-06T10:12Z

Får tyvärr fortfarande inte ihop det med union. Får följande felmeddelande:
**\#1248 - Every derived table must have its own alias** 

> Om du ska referera till d.countval i din SQL-fråga måste du nog också ange d som alias på din derived table.

 
Vad är en derived table för något?

```
select sum(d.countval) as summa from
(
select logins as countval from members where id=800
union
select count(*) FROM book WHERE member_id=800
)
```

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

## #6 — @nders, 2007-06-06T10:17Z

En "derived table" är, enkelt uttryckt, det som blir resultatet av din subselect - en "tabell" du kan göra ytterligare utsökningar ifrån.

```
select sum(d.countval) as summa from
(
select logins as countval from members where id=800
union
select count(*) FROM book WHERE member_id=800
) [b]as d[/b]
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/161153-count-räkna-ihop-från-flera-olika-tabeller
