---
title: "SUM från flera tabeller"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/47934-sum-från-flera-tabeller"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Jetboy"
published: "2002-07-15T09:23:00.000Z"
updated: "2002-07-15T10:16:48.000Z"
replies: 3
views: 295
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/47934-sum-från-flera-tabeller"
---

# SUM från flera tabeller

## #1 — Jetboy, 2002-07-15T09:23Z

Jag har problem med ett sql-kommando:

```
SELECT us_id, us_checked, us_approved, 
	SUM(IF(mo_checked = 0, 1, 0)) AS mo_pending, 
	SUM(IF(mo_checked = 1 && mo_approved = 0, 1, 0)) AS mo_refused, 
	SUM(IF(mo_checked = 1 && mo_approved = 1, 1, 0)) AS mo_totalApproved, 
	SUM(IF(pi_checked = 0, 1, 0)) AS pi_pending, 
	SUM(IF(pi_checked = 1 && pi_approved = 0, 1, 0)) AS pi_refused, 
	SUM(IF(pi_checked = 1 && pi_approved = 1, 1, 0)) AS pi_totalApproved 
FROM tbl_users 
LEFT JOIN tbl_moments ON (us_id = mo_userId) 
LEFT JOIN tbl_pictures ON (us_id = pi_userId) 
WHERE us_id = " . $intUserId . "
GROUP BY us_id";
```

 
If-satserna kollar ett visst villkor och returnerar 1 för sant och 0 för falskt för varje post i tabellerna **tbl_moments** och **tbl_pictures**. Resultatet summeras i ett eget fält i det resulterande recordsettet. Problemet är att SUM-funktionerna inte räknar riktigt som jag vill. Värdena från första tabellen räknas rätt och **mo_pending**, **mo_refused** och **mo_totalApproved** får helt rätt värden. Värdena från den andra tabellen blir helt fel; **pi_pending** innehåller summan av de tre mo-värdena, och de andra pi-värdena blir noll. 

Kan jag få SUM-funktionerna för pi-värdena att fungera som de gör för mo-värdena, eller måste jag göra två queries för att få detta att fungera? Tips mottages med stor tacksamhet.

/a

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

## #2 — LarsG, 2002-07-15T09:37Z

Det beror väl på att du har en left join och att det inte finns några matchande poster i pictures? Om det är så så är pi_checked och pi_approved null och if blir alltid falskt.

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

## #3 — Jetboy, 2002-07-15T09:44Z

Men det är ju det som är poängen. IF-satsen blir falsk och returnerar därmed 0, SUM-funktionen räknar alltså ihop antalet där IF är sant (och returnerar 1). Eftersom pi_checked och pi_approved är null borde IF returnera 0 och SUM, som summerar en massa nollor, borde bli 0 och inte ta värdet från en annan kolumn. Eller?

/Anders

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

## #4 — LarsG, 2002-07-15T10:16Z

Jag läste lite slarvigt. Du får göra två frågor (som du kan slå ihop med en union all om du har mysql 4.0 eller senare.)

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

---

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