---
title: "två count?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/154590-två-count"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "tanten"
published: "2006-12-07T13:11:01.000Z"
updated: "2006-12-07T15:36:30.000Z"
replies: 13
views: 533
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/154590-två-count"
---

# två count?

## #1 — tanten, 2006-12-07T13:11Z

När jag skriver så här så dras inte alla problemID bort. Bara en om det finns någon. Hur skriver man för att den ska räkna med alla?

```
 SELECT placering, count( * ) AS antal
	  FROM resultat r, lopp l
	  INNER JOIN starta s ON s.loppID = r.loppID AND r.loppID = l.loppID
	  WHERE s.stallID =$stallID and typID <5
          AND problemID != 9 
	  GROUP BY placering
```

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

## #2 — aasah, 2006-12-07T13:13Z

Jag är rädd att jag inte förstår frågan. Vad vill du åstadkomma?

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

## #3 — tanten, 2006-12-07T13:16Z

ProblemID 9 är strukna lopp och ska inte räknas in i antalet sprungna lopp utan resultat, där de nu räknas in. Så om en häst strukits 2 gånger så räknas bara en gång bort som jag skrivit det nu.

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

## #4 — Peter S, 2006-12-07T13:54Z

Är det inte så att du får ut en kryssprodukt av resultat och lopp med ovanstående fråga? Kanske skulle du ha

```
SELECT placering, count( * ) AS antal
	FROM resultat r, lopp l, starta s
	WHERE s.loppid = r.loppid AND r.loppid = l.loppid
	AND s.stallID =$stallID and typID <5 and problemID <> 9 
	GROUP BY placering
```

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

## #5 — tanten, 2006-12-07T14:01Z

Peter S...
Jag testade men det blir fortfarande bara en av strykningarna som dras bort. 
:-(

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

## #6 — yohpops, 2006-12-07T14:24Z

Vilket fält finns i vilken tabell?

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

## #7 — tanten, 2006-12-07T14:41Z

De ttre inblandade tabellerna ser ut så här

```
  resultat (
  loppID int(11) NOT NULL auto_increment,
  placering int(11) NOT NULL default '0',
  problemID int(2) default '1',
  prisSumma int(11) default '0',
  tid decimal(3,1) default '0.0',
  kommentar text

  lopp (
  loppID int(11) NOT NULL auto_increment,
  banID int(11) NOT NULL default '0',
  datum date NOT NULL default '0000-00-00',
  loppNr varchar(11) default '0',
  typID int(11) default '0' 

starta (
  loppID int(11) NOT NULL auto_increment,
  stallID int(11) NOT NULL default '0',
  stracka int(11) NOT NULL default '0',
  sparNr int(11) NOT NULL default '0',
  kuskID int(11) NOT NULL default '0',
  (
```

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

## #8 — yohpops, 2006-12-07T14:49Z

Det ser inte ut att vara något fel på sql-frågan.
Men den kan vara fel i datat.
Eftersom loppid är auto_increment i alla tabeller så blir det lätt missmatch.

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

## #9 — tanten, 2006-12-07T14:55Z

Ja jag tänkte på det också när jag såg tabellerna så här efter sig. men eftersom loppen matas in efterhand som de ska springas så har det aldrig blivit något fel när det gäller det. Varje tabell har fått rätt ID. Men den räknar inte bort de rader där problemID 9 finns med, mer än en rad. Varför?

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

## #10 — yohpops, 2006-12-07T14:57Z

Testa att skriva ut fälten istället för att räkna och se vad du får träff på.

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

## #11 — aasah, 2006-12-07T15:08Z

Du måste joina alla tre tabellerna. Testa följande:

```
SELECT placering, count( * ) AS antal
	  FROM (resultat r INNER JOIN lopp l ON r.loppID = l.loppID)
	  INNER JOIN starta s ON s.loppID = r.loppID 
	  WHERE s.stallID =$stallID and typID <5
          AND problemID <> 9 
	  GROUP BY placering
```

Men... har du ändrat strukturen? Resultat borde ha ett stallid också! Och då blir det:

```
SELECT placering, count( * ) AS antal
	  FROM (resultat r INNER JOIN lopp l ON r.loppID = l.loppID)
	  INNER JOIN starta s ON s.loppID = r.loppID AND s.stallID = r.loppID 
	  WHERE s.stallID =$stallID and typID <5
          AND problemID <> 9 
	  GROUP BY placering
```

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

## #12 — tanten, 2006-12-07T15:20Z

Jag testade bägge dina förslag aasah men då försvann alla resultat. Ska se om jag kan se varför.
Lade upp en tillfällig sida här <http://gotlandssidor.se/simstall/hasten.php?hid=2>
riktiga sidan <http://gotlandssidor.se/simstall/hast.php?hid=2>
Där står 4 oplacerade lopp, ska bara vara 2

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

## #13 — aasah, 2006-12-07T15:27Z

Hjälper detta:

```
SELECT placering, count( * ) AS antal
	  FROM resultat r, lopp l,starta s 
	  WHERE r.loppID = l.loppID AND s.loppID = r.loppID AND s.stallID =$stallID and typID <5
          AND problemID <> 9 
	  GROUP BY placering
```

Om stallID finns i resultat lägg med "AND s.stallID =r.stallID " i where satsen.

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

## #14 — tanten, 2006-12-07T15:36Z

Det är som förut, bara ett struket lopp som räknas bort... 
Nåja, nu måste jag återlämna datorn till ägaren. Återkommer kanske senare i kväll om jag får tillgång till någon... Tack så här långt...

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/154590-två-count
