![]() |
Datenbank: Interbase • Version: 6 • Zugriff über: Ibx-Komp.
Allg. SQL-Problem
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo,
vielleicht kann mir ja jemand auf die Sprünge helfen. TextFile 'example_All' ist ein kleiner Ausschnitt der ges. Tabelle. TextFile 'example_3' kommt meiner Wunschausgabe schon sehr nahe, allerdings sollte hier nur EIN Aktiennahme auftauchen in Verbindung mit der entsprechenden Indikator-Periode auf die der MAX-Wert (Pfeile sind von mir nachträglich eingezeichnet) zeigt. TextFile 'example_2' würde meiner Wunschausgabe entsprechen. (Die ausdrücke in Klammern sind von mir nachträglich eingezeichnet) Wie könnte der korr. SQL-befehl lauten ? Oder lässt sich dieses Problem ohne weitere Tabellen (View's) oder SubQueries überhaupt nicht lösen ? Danke |
AW: Allg. SQL-Problem
Du darfst dann nicht nach INDEP gruppieren.
|
AW: Allg. SQL-Problem
Wenn Du in der Lage bist, deine Wunschausgabe zu beschreiben "Zeige mir alle ...je.... die.., wobei..." dann sollte sich daraus ohne großen Aufwand die entsprechende SQL-Anweisung generieren lassen.
|
AW: Allg. SQL-Problem
Ungetestet könnte es in etwa so gehen:
Code:
SELECT TBL1.STOCK, TBL1.BALANCE, MYSQL1.INDPE FROM (SELECT STOCK, MAX(BALANCE) AS BALANCE FROM MYSQL1 GROUP BY STOCK) AS TBL1 LEFT OUTER JOIN MYSQL1 ON TBL1.Status = MYSQL1.Status AND TBL1.BALANCE = MYSQL1.BALANCE |
AW: Allg. SQL-Problem
Code:
SELECT STOCK,INDPE,MAX(BALANCE) FROM MYSQL1 WHERE BALANCE <> 0 GROUP BY STOCK
versuch es doch mal ohne INDPE würde dir evtl schon reichen ( wenn es das ist, was du brauchst ) [EDIT] du willst ja den INDPE von dem MAX wert, das würd mit den oben geschriebende Abfrage nicht gehen [/edit] |
AW: Allg. SQL-Problem
Ich denke EarlyBird liegt da schon ganz richtig:
Code:
(klitzekleine Änderung)
SELECT TBL1.STOCK
,MYSQL1.INDPE ,TBL1.BALANCE FROM (SELECT STOCK, MAX(BALANCE) AS BALANCE FROM MYSQL1 GROUP BY STOCK) AS TBL1 JOIN MYSQL1 ON (TBL1.STOCK = MYSQL1.STOCK AND TBL1.BALANCE = MYSQL1.BALANCE) nur wo kommen die 528,.. bei ADDIDAS her??? Gruß K-H |
AW: Allg. SQL-Problem
Hallo p80286,
zunächst einmal DANKE für Deine Antwort. Leider funktioniert auch Deine Version (mit der IBConsole) nicht ! Die '528' bei ADDIDAS kommen daher, das ich für JEDE Aktie das höchste Ergebnis haben möchte, siehe example_3. Ferner sollte nicht nur der Aktiename (dieser ist obligatorisch) sondern auch INDPE (Periode des entsprechenden techn. Indikators) auf welchen MAX(Balance) zeigt. Siehe example2 ! Gruß , Wendelin |
AW: Allg. SQL-Problem SELECT zum Zweiten
Hallo,
ich möchte Euch als erstes meine Lösung vorstellen, welche auch gut funktioniert : ************************************************** ******************** SELECT T1.ID1,T1.INDPE,T1.STOCK,T1.DAYS,T1.BALANCE [oder auch T1.*] FROM MYSQL1 T1 LEFT OUTER JOIN MYSQL1 T2 ON (T1.STOCK = T2.STOCK AND (T1.BALANCE < T2.BALANCE OR T1.BALANCE = T2.BALANCE AND T1.ID1 < T2.ID1)) WHERE T2.BALANCE IS NULL <-- [AND T1.BALANCE <> 0] kann angehängt werden und ist dann um den Faktor 6 schneller ! ************************************************** ******************** Leider funkt. auch die Antwort von p80286 nicht! Die IB-Console meckert beim 2. SELECT nach der 1. Klammer Error-Code -104 AUCH das angepasste SQL-Statement des Artikels: ![]() funkt. nicht ! ************************************************** ******************** SELECT A.* FROM MySQL1 A INNER JOIN (SELECT B.STOCK, Max(B.BALANCE) As MaxBalance FROM MySQL1 B GROUP BY B.STOCK) C ON A.STOCK = C.STOCK And A.BALANCE = C.MaxBalance Auch hier meckert die IB-Console ErrorCode -104 (3.Zeile - 2. SELECT) ! Wenn ich jedoch nur : (SELECT B.STOCK, Max(B.BALANCE) As MaxBalance FROM MySQL1 B GROUP BY B.STOCK) eingebe läuft alles wunderbar, allerdings ohne die restl. Felder, die ich benötige ! Es muss also an der Aggregatfunkt. 'GROUP BY' liegen. Wer hat eine Antwort darauf ? Wendelin |
AW: Allg. SQL-Problem
Es liegt nicht daran, sondern einfach an der Tatsache, dass IB6 keine DERIVED Tables kann. dieses Feature wurde in erst FireBird 2 eingeführt. Ich würde Dir raten, FireBird einzusetzen.
|
AW: Allg. SQL-Problem
Sehr geehrter Herr Kinzler,
Vielen Dank für Ihre schnelle Antwort. Ich habe erstmal im Internet recherchieren müssen, da mir der Begriff 'DERIVED Tables' nicht bekannt war. (Schließlich bin ich nur Hobby-Programmierer und hatte beruflich niemals etwas mit EDV bzw. IT zu tun). Daher bitte ich auch meine manchmal etwas niveaulosen Fragen zu entschuldigen. Ich nehme an, daß Sie mit Ihrer Antwort richtig liegen. Nun habe ich noch eine Frage. Wenn ich mich für FirebirdXX entscheiden würde, aber Delphi 7 mit seinen IBX-Komponenten unbedingt behalten möchte a) Welche Firebird - Version würden Sie mir empfehlen bezügl. Stabilität und Performance? b) Läuft diese FB-Vers. auch unter WIN XP / WIN 7 ? m.f.G. Wolfgang |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz