SQL Anweisung

Flausen

Neuer Benutzer
Beiträge
3
Hallo,
ich hab ein kleines Problem mit einer SQL- Anweisung und hoffe ihr könnt mir helfen.

SELECT (SELECT SUM (Höhe * Länge)
FROM Geometrie
WHERE Art = "Quader(AW)")
-
(SELECT SUM (Höhe * Länge)
FROM Geometrie
WHERE Art = "Quader(AWÖ)" ) AS Masse
FROM Geometrie;

In dieser Anweisung möchte ich nur die Differnz aus zwei Summen haben, aber es kommt nicht nur ein Wert heraus sondern mir wird der Wert so oft angezeigt wie viele Datensätze die Tabelle Geometrie hat.

Was kann ich machen um nur eine Wert zu erhalten, ich hab schon mit GROUP BY herum gespielt, aber es nicht hinbekommen.

Danke schon mal im Voraus.
 
Werbung:
So sollte es gehen. habs aber nicht getestet.

Gruss

Bernd
Code:
SELECT 1 AS ONE,
        SUM (IF ( Art = "Quader(AW)",  Höhe * Länge,0)) -
        SUM (IF ( Art = "Quader(AWÖ)", Höhe * Länge,0)) AS DIFF       
FROM Geometrie
WHERE Art = "Quader(AW)") OR Art = "Quader(AWÖ)" )
GROUP BY ONE;
 
Hallo,
ich hab ein kleines Problem mit einer SQL- Anweisung und hoffe ihr könnt mir helfen.

works for me:

Code:
test=*# select * from flausen ;
 h | b | x
---+---+---
 2 | 3 | 1
 3 | 4 | 1
 2 | 5 | 2
 7 | 7 | 2
(4 rows)

test=*# select (select sum(h*b) from flausen where x = 1) - (select sum(h*b) from flausen where x = 2);
 ?column?
----------
  -41
(1 row)

Andreas
 
Moin Andreas,

so sollte es auch sein. Bei

Code:
SELECT (SELECT SUM (Höhe * Länge)
FROM Geometrie
WHERE Art = "Quader(AW)")
-
(SELECT SUM (Höhe * Länge)
FROM Geometrie
WHERE Art = "Quader(AWÖ)" ) AS Masse
FROM Geometrie;

is das letzte FROM Geometrie; zu viel und bezieht sich auf das 1.te SELECT. Dadurch wird das Ergebnis so oft wiedergegeben wie
ROWS in Geometrie sind

Bernd
 
Hey,
danke für die vielen Antworten!

@Bernd
Wenn ich das FROM Geometrie weglasse sagt mir Access "Die Abfrage muss auf mindestens einer Tabelle oder Abfrage basieren."
Ichhatte mir das auch schon gedacht nur leider geht es nicht oder ich habe deinen post falsch verstanden. ;)
Wenn ich den Code aus deiner ersten Antwort nehme, nimmt Access die IF Anweisung nicht an. Ich habe schon einwenig gegoogelt
finde aber den Fehler nicht.

@Andreas
Ich glaube ich verstehe deinen Ansatz, du rufst zuerst die Tabelle in einer Abfrage auf und bildest dann mit einer anderen Abfrage die Summen und die Differnz?
Nun weiß ich aber nicht wie ich das in Access umsatzen soll! Wie kann ich denn die zwei Abfragen kombienieren, so das es funktioniert?

Danke nochmal.
Hoffe ich stelle mich hier nicht zu doof an!^^
 
Du postest im MySQL Forum und beschwerst dich das MySQL Code nicht in Access läuft :)

Probier mal:
Code:
SELECT    SUM (CASE WHEN Art = "Quader(AW)" THEN Höhe * Länge ELSE 0 END) -
        SUM (CASE WHEN Art = "Quader(AWÖ)" THEN Höhe * Länge ELSE 0 END) AS DIFF      
FROM Geometrie
WHERE Art = "Quader(AW)" OR Art = "Quader(AWÖ)"
 
Tschuldigung, hab ich übersehen. Kann ich das Thema verschieben oder kann das nur ein Admin?

Wegen dem Code, ich hab es mal abgetippt und mir wird angezeigt "Syntaxfehler (fehlender Operator)". Muss eventuell hinter das
CASE noch die Spalten, aber das wäre ja kein Operator?
 
Werbung:
Das war jetzt MSSQL (was mit Access viel gemein hat), genau kenne ich die Access Schmerzen auch nicht.
 
Zurück
Oben