AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Allg. SQL-Problem

Offene Frage von "mkinzler"
Ein Thema von wendelin · begonnen am 6. Mai 2014 · letzter Beitrag vom 1. Jul 2014
Antwort Antwort
Seite 1 von 2  1 2      
wendelin

Registriert seit: 29. Dez 2010
Ort: Nürnberg
126 Beiträge
 
Delphi 7 Enterprise
 
#1

Allg. SQL-Problem

  Alt 6. Mai 2014, 10:57
Datenbank: Interbase • Version: 6 • Zugriff über: Ibx-Komp.
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
Angehängte Dateien
Dateityp: txt example_All.TXT (8,7 KB, 35x aufgerufen)
Dateityp: txt example_3.TXT (783 Bytes, 21x aufgerufen)
Dateityp: txt example_2.TXT (628 Bytes, 22x aufgerufen)
Wolfgang
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Allg. SQL-Problem

  Alt 6. Mai 2014, 11:13
Du darfst dann nicht nach INDEP gruppieren.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: Allg. SQL-Problem

  Alt 6. Mai 2014, 16:48
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.
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#4

AW: Allg. SQL-Problem

  Alt 6. Mai 2014, 20:56
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
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Allg. SQL-Problem

  Alt 7. Mai 2014, 16:34
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]
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !

Geändert von Mokus ( 7. Mai 2014 um 16:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Allg. SQL-Problem

  Alt 7. Mai 2014, 18:00
Ich denke EarlyBird liegt da schon ganz richtig:
Code:
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)
(klitzekleine Änderung)

nur wo kommen die 528,.. bei ADDIDAS her???

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
wendelin

Registriert seit: 29. Dez 2010
Ort: Nürnberg
126 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Allg. SQL-Problem

  Alt 13. Mai 2014, 11:36
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
Wolfgang
  Mit Zitat antworten Zitat
wendelin

Registriert seit: 29. Dez 2010
Ort: Nürnberg
126 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Allg. SQL-Problem SELECT zum Zweiten

  Alt 30. Jun 2014, 21:30
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:
http://www.sql-und-xml.de/sql-praxis...zelzeilen.html
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
Wolfgang
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Allg. SQL-Problem

  Alt 30. Jun 2014, 21:44
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.
Markus Kinzler
  Mit Zitat antworten Zitat
wendelin

Registriert seit: 29. Dez 2010
Ort: Nürnberg
126 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: Allg. SQL-Problem

  Alt 1. Jul 2014, 12:24
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
Wolfgang
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz