---
title: "Om poster finns i en tabell ska WHERE-klausulen sättas in"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/119292-om-poster-finns-i-en-tabell-ska-where-klausulen-sättas-in"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "ampy"
published: "2005-01-04T17:46:08.000Z"
updated: "2005-01-04T18:51:01.000Z"
replies: 6
views: 436
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/119292-om-poster-finns-i-en-tabell-ska-where-klausulen-sättas-in"
---

# Om poster finns i en tabell ska WHERE-klausulen sättas in

## #1 — ampy, 2005-01-04T17:46Z

```
SELECT
	m.usr, 
	(m.money+sum(p.stake)) 
FROM
	members m 
	inner join pools p on p.userid = m.id 
	inner join matches ma on ma.id = p.matchID 
GROUP BY
	1 
ORDER BY
	2 desc limit 0,5
```

Om det finns rader i tabellen "pools" som uppfyller villkoret vill jag ha ett villkor i WHERE-klausulen som lyder:

```
where isnull(ma.result)
```

Hur ska man fixa till detta?

DBMS: MySQL 4.0

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

## #2 — LarsG, 2005-01-04T17:53Z

Om det inte finns några poster i pools som uppfyller villkoret så får du inget resultat alls så jag förstår inte vad du menar.

```
SELECT
	m.usr, 
	m.money+sum(p.stake)
FROM
	members m 
	inner join pools p on p.userid = m.id 
	inner join matches ma on ma.id = p.matchID 
  where ma.result is null
GROUP BY
	m.usr,m.money
ORDER BY
	2 desc limit 0,5
```

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

## #3 — ampy, 2005-01-04T18:04Z

Ok, ska förklara vad jag vill göra istället.

Jag vill addera två kolumner där ena kolumnen är **m.money** och den andra är summan av flera poster i kolumnen **p.stake**.

Jag vill endast beräkna summan av de poster där ma.result är NULL. (referens: ma.id = p.matchID )

Låt oss säga att en användare har ett högt värde i kolumnen m.money men inga poster i tabellen pools. Då kommer han/hon inte presenterats i resultatet i alla fall, fast jag vill det.  

Då bör jag använda mig av *left outer join* kom jag på nu. 

Sätter jag in left outer join istället och sätter in WHERE-klausulen får jag fortfarande samma resultat. Så vart ska man sätta in villkoret?

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

## #4 — LarsG, 2005-01-04T18:11Z

Flytta villkoret från where till on.

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

## #5 — ampy, 2005-01-04T18:19Z

Då får jag ut summan av alla användarens poster i tabellen pools, även där result inte är NULL.

```
select 
	m.usr, (m.money+sum(p.stake)) 
from 
	members m 
	left outer join pools p on p.userid = m.id 
	left outer join matches ma on ma.id = p.matchID and isnull(ma.result) 
group by 
	1 
order by 	
	2 desc limit 0,5
```

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

## #6 — LarsG, 2005-01-04T18:30Z

```
SELECT
	m.usr, 
	m.money+
        coalesce(sum(case when ma.result is null then p.stake
      else 0 end),0)
FROM
	members m 
	left join pools p on p.userid = m.id 
	left join matches ma on ma.id = p.matchID 
GROUP BY
	m.usr,m.money
ORDER BY
	2 desc limit 0,5
```

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

## #7 — ampy, 2005-01-04T18:51Z

Tack!

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/119292-om-poster-finns-i-en-tabell-ska-where-klausulen-sättas-in
