[MSSQL] Aftrekken query vraagje.

Pagina: 1
Acties:

  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
Ik heb in 2 tabellen bepaalde waardes in staan bijvoorbeeld :

tabel a :
aantal : 72

tabel b :
aantal 30

Nu wil ik dus met een stored procedure tabel a - tabel b uitvoeren. Bij mijn query geeft hij dan wel een waarde, alleen de verkeerde waarde.

Kan iemand me misschien vertellen wat ik fout doe?

hieronder is mijn query om de waarde eruit te halen :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE PROCEDURE rekenvr
@artikelnr int

AS

SELECT sum(aantal) AS aantal_besteld
FROM bestellingen
WHERE artnr = @artikelnr

SELECT sum([aantal geleverd]) AS aantal_verkocht
FROM verkopen
WHERE artikelnr = @artikelnr


SELECT sum(a.[aantal geleverd] - b.aantal) AS In_voorraad
FROM verkopen AS a, bestellingen AS b
WHERE a.artikelnr & b.artnr = @artikelnr
GO

Wat je wil is niet altijd wat je nodig hebt!


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:53
Euh, ik zou eerst eens kijken naar m'n query, want die syntax slaat op niets.

Wil je het verschil in aantal records tussen die 2 tabellen trouwens ?

[ Voor 35% gewijzigd door whoami op 10-06-2004 15:43 ]

https://fgheysels.github.io/


  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
In de Query Analyzer roep ik de SP op.
vervolgens vul ik 110 in als @artikelnr waarde.

In de eerste query return hij 72 bijvoorbeeld als waarde.
In de tweede query bijvoorbeeld 30.

Nu heb ik dus in de derde de sum van beiden (72 en 30 dus) van elkaar proberen af te trekken waarbij artikelnr 110 is. Hij geeft alleen geen 42 als return waarde maar -54.

Wat je wil is niet altijd wat je nodig hebt!


  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
whoami schreef op 10 juni 2004 @ 15:42:
Euh, ik zou eerst eens kijken naar m'n query, want die syntax slaat op niets.

Wil je het verschil in aantal records tussen die 2 tabellen trouwens ?
Ja inderdaad.

Wat je wil is niet altijd wat je nodig hebt!


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:53
En wat wil je bereiken met lijn 17 ? Misschien moet je maar eerst eens een sql tutorial ter hand nemen.

Verder moet het zoiets zijn:
code:
1
2
3
select sum(t1.*) - sum(t2.*)
from ....
where t1.id = t2.id and T1.Id = 10


En als dat niet lukt, zal het niet te doen zijn in 1 query.

[ Voor 13% gewijzigd door whoami op 10-06-2004 15:48 ]

https://fgheysels.github.io/


Verwijderd

probeer dit eens:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE PROCEDURE rekenvr
@artikelnr int

AS

DECLARE SUM1 int
DECLARE SUM2 int

SELECT @SUM1 = sum(aantal) AS aantal_besteld
FROM bestellingen
WHERE artnr = @artikelnr

SELECT @SUM2 = sum([aantal geleverd]) AS aantal_verkocht
FROM verkopen
WHERE artikelnr = @artikelnr


SELECT @SUM1 - @SUM2
GO

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Doe die laatste query zonder de sum eromheen eens in de query analyzer met de door jou gewenste waarde. Misschien dat je dan ziet wat er verkeerd gaat.

WHERE a.artikelnr & b.artnr = @artikelnr lijkt mij trouwens niet helemaal een goede constructie.

Ik heb altijd geleerd dat je dan zoiets moet doen:
code:
1
2
WHERE a.artikelnr = @artikelnr
AND b.artikelnr = @artikelnr

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:53
Verwijderd schreef op 10 juni 2004 @ 15:50:
probeer dit eens:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE PROCEDURE rekenvr
@artikelnr int

AS

DECLARE SUM1 int
DECLARE SUM2 int

SELECT @SUM1 = sum(aantal) AS aantal_besteld
FROM bestellingen
WHERE artnr = @artikelnr

SELECT @SUM2 = sum([aantal geleverd]) AS aantal_verkocht
FROM verkopen
WHERE artikelnr = @artikelnr


SELECT @SUM1 - @SUM2
GO
Dit zal idd het gewenste resultaat opleveren.

https://fgheysels.github.io/


  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
bigbeng schreef op 10 juni 2004 @ 15:50:
Doe die laatste query zonder de sum eromheen eens in de query analyzer met de door jou gewenste waarde. Misschien dat je dan ziet wat er verkeerd gaat.

WHERE a.artikelnr & b.artnr = @artikelnr lijkt mij trouwens niet helemaal een goede constructie.

Ik heb altijd geleerd dat je dan zoiets moet doen:
code:
1
2
WHERE a.artikelnr = @artikelnr
AND b.artikelnr = @artikelnr
Nee hier krijg ik dezelfde waarde terug.

Wat je wil is niet altijd wat je nodig hebt!


  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
whoami schreef op 10 juni 2004 @ 15:51:
[...]


Dit zal idd het gewenste resultaat opleveren.
Hij geeft aan int is not a recognized CURSOR option.
EDIT : vergeten @ te zetten bij de declaration. nu geeft ie incorrect syntax near AS aan. van die SELECT query.

[ Voor 22% gewijzigd door mpie op 10-06-2004 15:57 ]

Wat je wil is niet altijd wat je nodig hebt!


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:53
Als je zelf een beetje moeite wilt doen, dan kan je die syntax errors ook wel zelf oplossen.
Het is hier niet de bedoeling dat er voorgekauwde, direct werkende code gepost wordt.

https://fgheysels.github.io/


  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
whoami schreef op 10 juni 2004 @ 15:59:
Als je zelf een beetje moeite wilt doen, dan kan je die syntax errors ook wel zelf oplossen.
Het is hier niet de bedoeling dat er voorgekauwde, direct werkende code gepost wordt.
Ik wilde hiermee dus aangeven dat het niet werkt bovenstaande methode.

Wat je wil is niet altijd wat je nodig hebt!


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:53
mpie schreef op 10 juni 2004 @ 16:01:
[...]

Ik wilde hiermee dus aangeven dat het niet werkt bovenstaande methode.
Ik heb het over je laatste post ivm die syntax errors.

https://fgheysels.github.io/

Pagina: 1