---
title: "Addera flertal tabeller, ta bort NULL"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/177479-addera-flertal-tabeller-ta-bort-null"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "backer"
published: "2009-03-16T17:46:05.000Z"
updated: "2009-03-17T11:30:45.000Z"
replies: 6
views: 473
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/177479-addera-flertal-tabeller-ta-bort-null"
---

# Addera flertal tabeller, ta bort NULL

## #1 — backer, 2009-03-16T17:46Z

Hallojse,
tillbaka för lite vägledning.

Fick tipset att ifall ett värde returnerar NULL så kan man använda coalesce för att typa andra värden som skall användas. t.ex.
coalesce(list0,0)

Detta är ju super. Men jag försöker nu *ta bort resultat ifall ett värde inte existerar*. Det **funkar toppen** ifall jag väljer någon av list variablerna t.ex. **WHERE list0 \> 0** i slutet men ifall jag använder **totalScore** så **funkar det inte** alls, WHY?  :q

Såhär ser frågan ut.

```
SELECT playerId, scoreName, scoreDate, list0, list1, list2, list3, list4, list0 +list1 +list2 +list3 +list4 AS totalScore 
FROM (SELECT h1.playerId,
		h1.scoreName, 
		h1.scoreDate, 
			(SELECT MIN(scoreTime) 
				FROM tbl_highscores 
				WHERE scoreListId = 0  
				AND playerId = h1.playerId
				AND projectId = 1) AS list0 , 
			(SELECT MIN(scoreTime)  
				FROM tbl_highscores 
				WHERE scoreListId = 1
				AND playerId = h1.playerId
				AND projectId = 1) AS list1 , 
			(SELECT MIN(scoreTime) 
				FROM tbl_highscores 
				WHERE scoreListId = 2
				AND playerId = h1.playerId
				AND projectId = 1) AS list2 , 
			(SELECT MIN(scoreTime) 
				FROM tbl_highscores 
				WHERE scoreListId = 3 
				AND playerId = h1.playerId
				AND projectId = 1) AS list3 , 
			(SELECT MIN(scoreTime) 
				FROM tbl_highscores 
				WHERE scoreListId = 4 
				AND playerId = h1.playerId
				AND projectId = 1) AS list4  
		FROM tbl_highscores h1 
		GROUP BY h1.playerId 
		ORDER BY scoreDate ASC) dt 
	WHERE totalScore > 0 [B]<---- HÄR BLIR DET FEL!!![/B]
	ORDER BY totalScore ASC
	LIMIT 0,10;
```

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

## #2 — Peter S, 2009-03-16T18:57Z

Alias fungerar inte i WHERE-delen. I ORDER BY, däremot, fungerar det bra :)

 I stället får du skriva så här:

```
where dt.list0 + dt.list1 + ... + dt.list[i]N[/i] > 0
```

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

## #3 — backer, 2009-03-17T08:33Z

va knasigt =) men då tutar jag på det.

Antar här alltså om t.ex. dt.list1 är NULL så kommer posten inte med i listan? Då är det toppen.

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

## #4 — Peter S, 2009-03-17T08:48Z

Om list1 är NULL kommer inte summeringen att fungera, så vill du vara säker på att kunna använda alla list-kolumner i WHERE-villkoret kan du säga COALESCE(list1, 0) o.s.v.

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

## #5 — backer, 2009-03-17T10:07Z

jo, men jag vill att om list1 är NULL så vill jag inte ha med själva posten alls. 
Funkar ju fint när jag kör 1 lista. men hur blir det när man slår ihop alla.

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

## #6 — Peter S, 2009-03-17T10:12Z

Jag kanske är otroligt seg just nu, men vill du ta bort t.ex. list1 från SELECT- eller WHERE-delen om värdet är NULL?

Hur som helst så kan ju inte konstrukionen coalesce(listN, 0) bli fel eftersom A + 0 = A.

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

## #7 — backer, 2009-03-17T11:30Z

Sorry, jag som testade fel förut,

ifall A + 0  = A så blir ju 
A + B + C = plus ifall någon har värde

Men när jag testade 
where dt.list0 + dt.list1 + ... + dt.listN \> 0
Så blir någon NULL och då dyker den inte upp listan. 

GRYM som alltid Peter. tack

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/177479-addera-flertal-tabeller-ta-bort-null
