---
title: "ta data från flera tabeller"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/170261-ta-data-från-flera-tabeller"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "flaerpen"
published: "2008-03-26T22:22:04.000Z"
updated: "2008-03-30T19:38:33.000Z"
replies: 2
views: 472
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/170261-ta-data-från-flera-tabeller"
---

# ta data från flera tabeller

## #1 — flaerpen, 2008-03-26T22:22Z

Väldigt simpelt förklarat ser mina tabeller ut såhär: 

```
Tabell A:
+--------------------------------------------------+
| id | namn | beskrivning | anamn | datum | status |
|--------------------------------------------------|
| 1  |  X   |   dansar    | kalle | 080326|   2    |
|--------------------------------------------------|
| 2  |  Y   |   pratar    | kalle | 080325|   2    |
|--------------------------------------------------|
| 3  |  Z   |   springer  | oskar | 080324|   2    |
+--------------------------------------------------+

Tabell B:
+--------------------------------------------------+
| id | aid  |  anamn  |   text   | datum | status  |
|--------------------------------------------------|
| 1  |  1   |  oskar  |   coolt  | 080326|   0     |
|--------------------------------------------------|
| 2  |  1   |  nils   |   najs   | 080326|   0     |
|--------------------------------------------------|
| 3  |  3   |  kalle  |   bra    | 080326|   0     |
|--------------------------------------------------|
| 4  |  2   |  kalle  |  häftigt | 080325|   0     |
+--------------------------------------------------+

Tabell C:
+------------------------------+
|aid|  anamn  | datum | status |
|------------------------------|
| 1 |  nils   | 080326|   0    |
|------------------------------|
| 1 |  oskar  | 080326|   0    |
|------------------------------|
| 1 |  kalle  | 080326|   0    |
|------------------------------|
| 2 |  oskar  | 080326|   0    |
|------------------------------|
| 3 |  oskar  | 080326|   0    |
+------------------------------+
```

**Sammanfattning:**
Tabell B och C är relationstabeller till Tabell A. Jag vill plocka ut ALLA värden och sedan skriva ut dem, på något sätt. Jag vill också räkna ut hur många poster som har en relation till posterna i Tabell A. 

**Exempel:**
Jag väljer *id=1* i *Tabell A*. Hur många har en relation till det värdet i Tabell B? Jo *aid=1*, *2* gånger. Jag vill därmed att siffran *2* ska skrivas ut. 

Vi gör detsamma mellan *Tabell A och C* med samma *id=1*. Då får vi *aid=1*, *3* gånger - och därmed ska siffran *3* skrivas ut.

Skulle vi ta *id=3* i Tabell A skulle vi få värdena *1* och *1*.

\----------

Jag hoppas ni förstår vad det är jag vill åstadkomma. För att ge er så mycket information som möjligt ger jag er den sql jag använt, men inte lyckats få att fungera riktigt. Jag ska inte ta åt mig hela äran för denna då jag fick hjälp med den på ett annat forum:

```
SELECT 
	f.id AS id, 
	f.title AS title, 
	f.description AS description, 
	f.username AS username, 
	f.pubdate AS pubdate, 
	COUNT(v.id) AS votes, 
	COUNT(c.featureid) AS comments
FROM 
	features f
LEFT JOIN 
	votes v
ON
	v.id=f.id AND v.deleted=0
LEFT JOIN
	comments c
ON
	c.featureid=2 AND c.deleted=0
WHERE 
	f.status=3
GROUP BY f.title
ORDER BY f.pubdate DESC
```

sqlen ovan gjordes utifrån den här undre, som jag gjorde från början men hade problem med:

```
SELECT 
	f.id AS id, 
	f.title AS title, 
	f.description AS description, 
	f.username AS username, 
	f.launchdate AS launchdate, 
	COUNT(v.id) AS votes, 
	COUNT(c.featureid) AS comments
FROM 
	features f, 
	votes v, 
	comments c

WHERE 
	f.status=3 AND 
        v.deleted=0 AND 
        v.id=f.id AND 
        c.deleted=0 AND 
        c.id=f.id

GROUP BY 
        f.id
ORDER BY 
        f.launchdate DESC
```

Ett stort tack på förhand /flaerpen

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

## #2 — Peter S, 2008-03-27T22:27Z

Välkommen till wF!

På vilket sätt fungerar det inte? Vilket DBMS används?

Du kan ju testa följande:

```
SELECT 
	f.id AS id, 
	f.title AS title, 
	f.description AS description, 
	f.username AS username, 
	f.pubdate AS pubdate, 
	sum(case when v.id is null then 0 else 1 end) AS votes, 
	sum(case when c.featureid is null then 0 else 1 end) AS comments
FROM 
	features f
LEFT JOIN 
	votes v
ON
	v.id=f.id AND v.deleted=0
LEFT JOIN
	comments c
ON
	c.featureid=2 AND c.deleted=0
WHERE 
	f.status=3
GROUP BY f.title
ORDER BY f.pubdate DESC
```

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

## #3 — flaerpen, 2008-03-30T19:38Z

Tack! Med hjälp av andra fick jag fram något liknande din sql-sats. Du hade dock löst det där med att om c.featureid och v.id är noll så visas inte det resultatet, annorlunda än vad vi kom fram till (kanske tom bättre). 

Man inser att man har en del att lära när man ser era maffiga satser :P tack för din tid :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/170261-ta-data-från-flera-tabeller
