Toon posts:

[SQL] Gebruik van subselect resultaten in query

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig om een query te maken die wedstrijdresultaten uit een tabel omzet naar een stand. Dit gaat best wel makkelijk, maar ik zit toch met een vraag.

Dit is de query die ik op dit moment heb.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SELECT team_naam ,(
   SELECT count(w.id)
      FROM wedstrijden_new w INNER JOIN schema14 s ON w.schema_wed_id = s.id
      WHERE (s.thuis_wed = t.team_id OR s.uit_wed = t.team_id)
      AND w.thuis_uitslag IS NOT NULL AND w.uit_uitslag IS NOT NULL
      AND w.seizoen_id = 3 AND w.klasse_id = 1 )
      AS wd, (
   SELECT count(w.id)
      FROM wedstrijden_new w INNER JOIN schema14 s ON w.schema_wed_id = s.id
      WHERE w.thuis_uitslag IS NOT NULL
      AND (s.thuis_wed = t.team_id AND w.thuis_uitslag > w.uit_uitslag 
          OR s.uit_wed = t.team_id AND w.thuis_uitslag < w.uit_uitslag )
      AND w.seizoen_id = 3 AND w.klasse_id = 1 )
      AS gw, (
   SELECT count(w.id)
      FROM wedstrijden_new w INNER JOIN schema14 s ON w.schema_wed_id = s.id
      WHERE w.thuis_uitslag IS NOT NULL
      AND (s.thuis_wed = t.team_id AND w.thuis_uitslag = w.uit_uitslag 
          OR s.uit_wed = t.team_id AND w.thuis_uitslag = w.uit_uitslag )
      AND w.seizoen_id = 3 AND w.klasse_id = 1 )
      AS gl, (
   SELECT count(w.id)
      FROM wedstrijden_new w INNER JOIN schema14 s ON w.schema_wed_id = s.id
      WHERE w.thuis_uitslag IS NOT NULL
      AND (s.thuis_wed = t.team_id AND w.thuis_uitslag < w.uit_uitslag 
          OR s.uit_wed = t.team_id AND w.thuis_uitslag > w.uit_uitslag )
      AND w.seizoen_id = 3 AND w.klasse_id = 1 )
      AS vl
FROM teams t WHERE seizoen_id = 3 AND klasse_id = 1

Wat hier wordt berekend is het aantal gespeelde wedstrijden en het aantal wedstrijden dat is gewonnen, gelijk gespeeld en verloren.
Nu komt het aantal punten. Dat is te berekenen door 'gw' *3 te doen en dan 'gl' erbij op te tellen.
Het lukt maar niet om die 2 resultaten (gw en gl) uit de query te gebruiken voor het berekenen van het aantal punten. Ik kan die 2 queries wel nog een keer uitvoeren en dan met een + teken aan elkaar plakken, maar dat is niet goed voor de performance.
Dan bedoel ik dit:
((query-gw)*3)+query-gl AS pnt

Daarbij worden 2 keer dezelfde gegevens opgehaald en dat lijkt me overbodig.
Ik heb met Google gezocht naar dingen als 'use subselect results in the same query', maar dat heeft niks opgeleverd.

De database server draait op PostgreSQL 7.4

  • jAnO!
  • Registratie: Januari 2002
  • Laatst online: 01-05 18:22

jAnO!

lalalavanillevla

Waarom wil je dat perse al in de query doen?
In het kader van "If all you have is a hamer, every problem looks like a nail"?

When some people work at a place for ten years they get ten years of experience, other people work at a place for ten years and get one year of experience ten times.