AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken suche nach SQL Schulungsunterlagen
Thema durchsuchen
Ansicht
Themen-Optionen

suche nach SQL Schulungsunterlagen

Ein Thema von waldforest · begonnen am 6. Nov 2015 · letzter Beitrag vom 9. Nov 2015
Antwort Antwort
Seite 1 von 3  1 23      
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#1

suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 10:35
Datenbank: Firebird • Version: 2.5 • Zugriff über: Zeos
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?
mfg wf
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 10:49
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
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 12:21
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 13:00
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.
Wieso ist das unflexibel ? Es gibt doch Parameter. Ich brauche z.B. einen Vorjahresvergleich über Kunden-Artikel-Statistik. D.h. ich brauche folgende Parameter : Ku.-Nr., Jahr, Vergleichsjahr, VonMonat, von - bis Art.-Nr. usw. In der DB ist dann eine SP, die diese Parameter verarbeitet. Und ich setze sie in meinem Delphi-Programm und fertig ! Die SP hat in der DB halt ca. 150 Zeilen, und ? Du kannst das ganze auch ohne Stored Procedure machen, dann sind die 150 Zeilen eben in Deinem Delphi-Programm. Ergebnis bleibt aber gleich.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von TRomano
TRomano

Registriert seit: 24. Nov 2004
Ort: Düsseldorf
193 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 13:13
Ü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 ...
Thomas Forget
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 13:16
@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).
Gruß, Jo
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 13:33
Ü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) ...
völlig richtig. Oder wenn es beides mal der selbe Aufwand ist seine 1.000 Kunden mit dem Update zu versorgen spielt das dann (fast) keine Rolle mehr. Es kommt also immer darauf an


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 ...
leider.. bisher hätte ich auch gedacht, dass es recht einfach ist - aber vor kurzem hatte ich einen Fall da war es deutlich schneller einen join über mehrere größere Tabelle "manuell" zu machen, d.h. erst eine Tabelle abrufen und in eine Objektstruktur zu packen, dann die andere Tabelle abrufen und die Daten dann mit denen in der Objektstruktur zusammen führen....
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 13:44
Über den Sinn, oder eben nicht Sinn, von Stored Procedures kann man wie immer stattlich streiten.
Hier wird nicht gestritten. Aber ich sags mal so : wenn ich vor der Frage stehe, eine SP zu schreiben oder 150 Zeilen in Delphi, dann nehme ich die SP. Die brauche ich nämlich nur vorab in IBExpert testen und dann lediglich die Parameter per Delphi setzen.

@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,
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 14:05
Es führt zwar ein wenig weg von den Schulungsunterlagen ...

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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 14:20
Über den Sinn, oder eben nicht Sinn, von Stored Procedures kann man wie immer stattlich streiten.
Hier wird nicht gestritten. Aber ich sags mal so : wenn ich vor der Frage stehe, eine SP zu schreiben oder 150 Zeilen in Delphi, dann nehme ich die SP.
Da mir vor einiger Zeit eine SP über den Weg gelaufen ist, die Freitext in drei Felder aufgespalten hat (warum Felder da steht doch alles) stehe ich den Verfechtern der SP eher skeptisch gegenüber. Nichts desto trotz "Es kommt darauf an". Wenn Du "nur" Datenverwaltung mit einer DB betreibst, hast Du andere Anforderungen, als wenn Du vor allem Statistik betreiben willst. Willst Du beides machen, dann richte Die DB auch so ein, daß beides gleich gut geht. Alles andere ist sparen am falschen Platz.

Gruß
K-H

P.S.
manchmal geht kein Weg an einer SP vorbei.
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:47 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