[SQL Server] Resultaten van 2 queries aftrekken

Pagina: 1
Acties:
  • 345 views sinds 30-01-2008
  • Reageer

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 14:15
Ik heb nu 2 queries, die de volgende resultaten opleveren:
Tabel 1:
idamount
120
215
311

Tabel 2:
idamount
114
218
311

Tabel 3:
idamount
16
2-3
30

Hierin is de bovenste tabel de gewenste situatie, en de onderste de situatie zoals hij op dit moment is. De derde tabel is wat ik eigenlijk wil hebben. (Deze queries gebruiken allebei verschillende tabellen om de resultaten op te halen). Nu kan ik wel in m'n ASP code de resultaten gaan zitten vergelijken tussen de eerste twee tabellen, maar volgens mij moet dit resultaat ook wel met sql te achterhalen zijn. Ik zat te denk aan een negatieve union ofzo, maar dat bestaat volgens mij niet. Hoe kan ik dit oplossen? Ik heb geen idee in welke richting ik het zou moeten zoeken..

Roomba E5 te koop


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Ligt een beetje aan je query's hoe je dit het beste kunt doen.
Als SQL server het ondersteunt zou je bijvoorbeeld je query's als in-line views op kunnen nemen in de from clausule van een 3e query die dan je 2 query's joined.

Who is John Galt?


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
SQL:
1
2
SELECT (b.amount + c.amount) AS getal FROM tbl_b AS b 
  INNER JOIN tbl_c AS c ON b.id = c.id;


moet dat toch gewoon doen...

[ Voor 7% gewijzigd door faabman op 29-04-2004 12:05 ]

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

faabman schreef op 29 april 2004 @ 12:04:
SQL:
1
2
SELECT (b.amount + c.amount) AS getal FROM tbl_b AS b 
  INNER JOIN tbl_c AS c ON b.id = c.id;


moet dat toch gewoon doen...
query != tabel

Who is John Galt?


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
true, maar de TS heeft het erover dat hij nu alles in asp doet... dus ik ging er stiekum vanuit dat het om een weergave ging...

@TS vertel even wat meer over de DB die je gebruikt...

* faabman moet ff beter lezen 8)7

[ Voor 8% gewijzigd door faabman op 29-04-2004 12:30 ]

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 14:15
Dat niet, maar geinspireerd door zijn idee heb ik het wel ongeveer zo opgelost:
code:
1
2
3
4
5
6
7
8
SELECT
    A.id,
    (A.amount - B.amount)
FROM
    query A AS A,
    query B AS B
WHERE
    A.id = B.id

De opplossing was simpeler dan ik dacht eigenlijk.

Edit:
@TS vertel even wat meer over de DB die je gebruikt...
In de titel staat "SQL Server"...., maar goed het is al opgelost dus. Bedankt voor het meeedenken in ieder geval!

[ Voor 22% gewijzigd door sig69 op 29-04-2004 12:20 ]

Roomba E5 te koop


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:18
In SQL Server 2000 heb je zoiets als 'computed columns' oid. Ik weet de naam niet precies meer; echter, die kan je enkel gebruiken als de columns die je gebruikt om de waarde te berekenen zich in dezelfde tabel bevinden als de 'computed column'.

Anders kan je ook eens even naar triggers kijken.

https://fgheysels.github.io/


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 25-05 20:56
De topic starter gebruikt ook tabellen waar 'ie resultaten bedoelt, dus ik vind het niet zo heel vreemd dat faabman daar van uit ging. Ik denk echter dat de topic starter de waarden uit 'tabel' 2 van 'tabel' 1 wil aftrekken en zo 'tabel' 3 wil verkrijgen, dus in dat geval moet er in plaats van opgeteld afgetrokken worden.

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 14:15
Soultaker schreef op 29 april 2004 @ 12:21:
De topic starter gebruikt ook tabellen waar 'ie resultaten bedoelt, dus ik vind het niet zo heel vreemd dat faabman daar van uit ging.
Je hebt gelijk, was niet zo heel erg duidelijk. Sorry.
Ik denk echter dat de topic starter de waarden uit 'tabel' 2 van 'tabel' 1 wil aftrekken en zo 'tabel' 3 wil verkrijgen, dus in dat geval moet er in plaats van opgeteld afgetrokken worden.
Klopt.

Roomba E5 te koop

Pagina: 1