Autor Beitrag
Yacoon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Mo 17.03.03 11:56 
Ich habe ein Statement, dieses Statement leigert mir drei Werte zurück, Menge, Maximale Menge, Different zwischen Menge und MaxMenge.
Die auf die aktuelle Menge kann ich so zugreifen, ist einfach ein Feld in der Datenbank. Die MaximaleMenge errechne ich aber anhand der Größe.
Das mache ich mit einem SubSelect.

Zitat:
(SELECT ...) AS MAXMENGE


Der Alias MAXMENGE beinhaltet also den maximalen Mengenwert. Jetzt habe ich gedacht ich kann die differenz einfach so machen,

Zitat:
(MAXMENGE - MENGE) AS DIFFERENZ.


Jedoch kennt er das Feld MAXMENGE nicht?
Muss ich den SubSelect nochmals ausführen um an die Differenz zu gelangen oder gibt es eine Möglichkeit auch so an den Wert ranzukommen.

Danke für eure hilfe
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 17.03.03 12:08 
Warum machst DU denn ein Subselect? Es gibt die Funktion Max(Tabellenfeld), da is das ganze schon drin, und wenns dann nicht geht mit der Differenz isses ja kein Problem, das nochmal in der Differenz zu schreiben.

Oder irre ich mich?
Gruß
Yacoon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Mo 17.03.03 12:12 
Ich mache das aus dem Grund, weil ich die Daten über 4 Tabellen beziehe.
Das ganze ist ein Teil einer Warenwirtschaftslösung. Mir ghet es nur darum, das wenn ich einen Wert mittel SubSelect in eine Variable speichere (AS MAXMENGE), kann ich diesen Wert in weiteren Operationen in dem Statemet wie z. B. Menge - MaxMenge benutzen?
Weil bei mir sagt der das der das Feld MaxMenge nicht kennt. Ist ja auch klar warum er das Feld nicht kennt, aber es kann doch nicht sein, das wenn ich einen Wert mehrmals in einen Statment bracuhe, ich ihn jedesmal über einen SubSelect erneut holen muss.
Andi1982
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 497

WinXP HE
D6 Enterprise
BeitragVerfasst: Mo 17.03.03 12:16 
Schau dir mal diesen SQL an, in der art sollte deiner Aussehen, kenne leider deine genauen kriterien nicht, aber der Trick liegt darin dass du mit deinem Subselect ne eigene Table definierst!

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
SELECT                                                          
        T1.BUVERTNR, BUVERSTE, BURENTE, BUJRENTE,               
        BURENTE - T3.MAXMENGE AS DIFFERENZ                      
FROM                                                            
        KLV1.TKLBUZ3 T1,                                        
        (SELECT T2.BUVERTNR, MAX(BUJRENTE) AS MAXMENGE          
         FROM KLV1.TKLBUZ3 T2                                   
         GROUP BY T2.BUVERTNR) T3                               
WHERE                                                           
        BUAKTIML = 'A'                                          
    AND T3.BUVERTNR = T1.BUVERTNR


Bei fragen einfach fragen :D

_________________
Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 17.03.03 12:25 
Is das net eine temporäre Tabelle? Da kriegste aber Probleme, denn erst ab Interbase Vers. 7 gibts die. Die 6er unterstützt das noch nicht.... leider.
Andi1982
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 497

WinXP HE
D6 Enterprise
BeitragVerfasst: Mo 17.03.03 13:04 
Also so viel ich weiß zählt diese Art von sub-select nicht zu den Temporären Tabellen, sondern funktioniert genauso wie dein Sub-Select.

Verbessert mich wenn ich falsch liege, aber temp-Tabellen werden doch mit Create Table erstellt.

_________________
Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...