![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: Zeos
suche nach SQL Schulungsunterlagen
Hallo,
ich möchte mich intensiver mit SQL-Abfragen befassen, die über die Grundlagen hinaus gehen. Im Netz findet man sehr viele Infos zu einfachen Abfragen. Ich suche eine gute Unterlage, ideal mit Fallbeispielen, bei denen es mehr um verschachtelte Abfragen, Auswertungen mit Aggregatsfunctionen geht. z.B. Umsatz und Absatzauswertungen, Einkaufsplanung auf Basis Historien (z.B. in Wochen und Monatssicht in Bezug auf Summen, Mittel- und Maximalwerte). Ich würde dies gerne über SQL, oder ggf einer Procedure in Firebird erledigen.Leider habe ich bisher noch nichts wirklich brauchbares gefunden wie man so etwas in Firebird realisieren kann. In Excel lässt sich die relativ einfach über Pivots realisieren. Oder geht das nicht und muss es über eine Proc in Firebird abwickeln? |
AW: suche nach SQL Schulungsunterlagen
Hallo,
das "The Firebird Book Second Edition" hast du schon? Der Rest: Kommt darauf an: jede Struktur sieht anders aus und erfordert daher eine andere Vorgehensweise. Wichtig ist, dass Du entsprechende Tools verwendest, mit denen Du Flaschenhälse finden kannst (fehlende Indizes, schlechte Joins,..) sprich eine Performanceanalyse für Queries bietet. StoredProcedure oder nicht: Kommt halt darauf an: Hast Du einen Datenbankserver (d.h. die Datenbank läuft auf einem anderen Rechner) und es ist möglich, dass durch die StoredProcedure die Menge an Daten die übers Netzwerk gehen deutlich eingeschränkt werden können, weil eben Auswertungen auf viele Daten auf dem Server passieren und nur noch wenige Daten übertragen werden, würde die Nutzung einer StoredProcedure schon Vorteile haben. Grüße |
AW: suche nach SQL Schulungsunterlagen
Zu Unterlagen kann ich nichts sagen, außer die google Suche zu empfehlen.
zu Pivot und StoredProcs: Leider fremdeln die meisten DB mit diesen Anforderungen, eine StoredProc ist sicher eine Lösung, aber eben handgestrickt und steif. Auch die, die es können, machen es nicht besonders flexibel. Für eine Visualisierung verwendet man lieber entsprechende Reportkomponenten.* Ich würde daher in der Verarbeitung so lange wie möglich in Listenform bleiben und dann final per Reportkompo oder SP die Pivot-Transformation machen. Im Zweifel kannst Du die Pivot-Transformation natürlich auch nach wie vor dem Spreadsheet überlassen. Die können das prima und komfortabel. Den Performanceaspekt, den Jumpy schon ansprach, solltest Du jedenfalls nicht unberücksichtigt lassen. Also Daten eindampfen, Aggregation usw. per SQL, ggF. SP, Transformation dann je nach Bedarf mit geeigneten Mitteln. Je flexibler das sein muss, desto weniger würde ich es in der DB machen. * Wenn Du via Client oder sonst wie in der Lage bist, dynamisch SQL zusammenzubasteln, kannst Du einen deutlichen Komfortgewinn realisieren, wenn Du das dann im Falle von FB als Parameter an eine Aggregat bzw. Pivot SP übergibtst. |
AW: suche nach SQL Schulungsunterlagen
Zitat:
|
AW: suche nach SQL Schulungsunterlagen
Über den Sinn, oder eben nicht Sinn, von Stored Procedures kann man wie immer stattlich streiten. Letzten Endes entscheidet man, ob man wirklich immer ein Rollout für viele Rechner machen will (bei einer Delphi-Version) oder ob man es nur server-seitig macht (script) ...
Und eventuell eine andere Frage ist es, ob man es in Delphi auch wirklich mit 150 Zeilen (wie im genannten Beispiel) hinbekommt. Ist nicht immer so. Und drittens schätzt man ab, ob es Sinn macht vom Client aus mehrere Statements an den Server zu schicken, oder ob man an den Server sozusagen nur ein paar Parameter schickt und das gesamte Ergebnis zurückbekommt. So einfach oder kompliziert ist es eben ... |
AW: suche nach SQL Schulungsunterlagen
@hansa: Wenn es mit einem Parameter getan ist oder mit 2 oder mit 5 usw, ok. Dafür sind die Systeme ja ausgelegt.
Ich meinte speziell die Pivotfunktion und die Umsetzung (wenn sie überhaupt in einem Produkt existiert, bei fb glaub ich nicht), die leider eine explizite Definition (Angabe) der gewünschten Spalten erfordert. Das wiederspricht der Natur einer Liste, die idr beliebig lang ist. Pivotisiert man bspw. irgendwelche Geldsummen über 12 Monate ist das unproblematisch, weil es (bis auf das 13. Monatsgehalt) wahrscheinlich keine Varianten gibt. Versucht man das gleiche über verkaufte Produkte, sieht es schon ganz anders aus. An der Stelle wird es unflexibel und man ist besser bedient, wenn man das dazu notwendige SQL dynamisch zusammenbaut (und das dann meinetwegen wieder als Parameter übergibt). |
AW: suche nach SQL Schulungsunterlagen
Zitat:
Zitat:
|
AW: suche nach SQL Schulungsunterlagen
Zitat:
@Jobo : Wieso soll es bei verkauften Produkten Ärger geben ? Genau darum geht es bei mir. Die Parameter betreffen auch hauptsächlich die Where-Klausel. Die Datenmenge soll ja von Anfang an gering gehalten werden. Und die 150 Zeilen kommen in meinem Beispiel nur zustande, weil es eben um 12 Monate geht. Ergibt halt solche Konstrukte (hier 1 Monat und das mal 12 + Where + Var.-Deklarationen) :
Code:
SUM (CASE MONAT WHEN 1 Then
CASE :WERTTYP WHEN 0 THEN MENGE WHEN 1 THEN UMSATZ ...geht bis 4 ELSE 0 END ELSE 0 END) as Mon1, |
AW: suche nach SQL Schulungsunterlagen
Es führt zwar ein wenig weg von den Schulungsunterlagen ... :stupid:
Die Argumente pro/contra SP bei einem Pivot (bzw. bei einer komplexeren Abfrage) kann ich auf jeden Fall nachvollziehen. Die beste Alternative ist eigentlich eine Zwischenschicht die eben genau zwischen dem Client und der Datenbank hängt. Ob die Ergebnisse nun über eine SP (weil die sich eben sehr schön auf dem SQL-Server umsetzen lässt) oder aus einer nachgelagerten Verarbeitung (weil sich das nur mit Kopfstand und Salto rückwärts auf dem SQL-Server berwrkstelligen lässt) spielt dann für den Client keine Geige mehr. Der bekommt die Daten im vereinbarten (und mundgerechten) Format und zeigt diese dann an. |
AW: suche nach SQL Schulungsunterlagen
Zitat:
Gruß K-H P.S. manchmal geht kein Weg an einer SP vorbei. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:47 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