AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Bekomme Inner Joins nicht hin

Bekomme Inner Joins nicht hin

Offene Frage von "p80286"
Ein Thema von Der schöne Günther · begonnen am 18. Dez 2018 · letzter Beitrag vom 21. Dez 2018
Antwort Antwort
Seite 5 von 6   « Erste     345 6   
mkinzler
(Moderator)

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

AW: Bekomme Inner Joins nicht hin

  Alt 20. Dez 2018, 08:42
Zitat:
Auf der Ebene am ehesten vergleichbar mit dem embedded Part von Firebird, aber eben nur mit dem. Ebenso exotisch der lockere Umgang mit Typen, low concurrency Ansatz, ..
Wobei Firebird hier natürlich viel mehr Standardkonformität bietet.
Markus Kinzler
  Mit Zitat antworten Zitat
jobo

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

AW: Bekomme Inner Joins nicht hin

  Alt 20. Dez 2018, 08:52
Ja, ich meinte das Produkt an sich und seine "Nische" /Biotop. Der kleine Fußabruck und das Embedding schienen mir da bei Firebird ein gute Analogie.
Gruß, Jo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Bekomme Inner Joins nicht hin

  Alt 20. Dez 2018, 09:14
Habe ich auch so verstanden. Ich finde nur das FB embedded die bessere Alternative darstellt.
Markus Kinzler
  Mit Zitat antworten Zitat
MichaelT

Registriert seit: 14. Sep 2005
Ort: 4020 Linz
532 Beiträge
 
Delphi 10.3 Rio
 
#44

AW: Bekomme Inner Joins nicht hin

  Alt 20. Dez 2018, 10:15
Du bist nicht allein. Viele denken so (kompliziert).

Diese Syntax bis Oracle 8i herausgebracht waren Subqueries schweineteuer. Die waren ähnlich teuer wie die Verwendung von Aggregatfunktionen. Ein Primary Key muss nicht als Index abgebildet werden und ein Foreign Key nicht als Constraint.

Es gibt einen gewaltigen Unterschied zwischen Record und Pageserver würde man heute sagen. Oracle hat schon immer viel Blöcke gepfuffert. (Der Block wurde in einer Art in der DB angesiedelten 'Middle Tier' in Eigenverantwortung verwaltet aka. as SGA).

Mit der Zeit wurden diese Themenkomplexe verheiratet und die Syntax einerseits entwicklerfreundlicher und benutzerfreundlicher zugleich. Die Aussage 'Ich kenne mich in SQL aus' ist gleichzustzen mit der Aussage der Bürokraft 'Ich kenne mich in Excel aus'. Well it depends.

Der Entwickler sitzt vor zwei Syntaxwelten und der User unterschrieb eine EDV-Anforderung. Bei Correlated Subqueries ist eigentlich bezogen auf die Beschreibung der Ergebnismenge die Magic teils verwirrend. (reingepfrimmelt)

---

Zur SQL Query. Im Regelfall geht es immer einfach(er). Viele Wege führen nach Rom und auf den meisten läuft man mit der Kirche ums Kreuz.

In den 90ern und hernach war ein Wettlauf um den 'besten' Optimizer. Auf einmal verschwanden die ganz normalen Queries bei denen es nicht viel zu optimieren gab aus dem Licht der Öffentlichkeit.

Ähnlich wie in Delphi das Wunder einer Ereignisbehandlung wird keiner mehr explizit wieder hinschreiben.

Stammdaten sind Prüftabellen die im Rahmen der E/R Bewegung und auch schon zuvor mit einer Semantik belegt wurden.
  • NULL kann man auch eine Semantik verpassen.
  • Fremdschlüssel muss man nicht als Constraint abbilden.
  • Der Constraint prüft auf die Zugehörigkeit eines Werts zu einer Domäne (enum). Sobald du Enumeration in Listen verwalten musst, dann frohlockt die Prüftabelle.
  • Die Liste ist beliebig verlängerbar ....

Der Zeitbezug hielt ob der verfügbaren Plattengrößen Einzug ist aber in E/R nicht explizit reflektiert. Der lebt in der Art der Modellierung als Beziehung. An sich gibt es einfach keine Stammdaten. Es gibt Datensätze ohne Zeitbezug die als solche angesehen werden. Eigentlich sind die Kopiervorlagen und genau das passiert beim herankarren aus den Transaktionsdaten im Rahmen der Auswertungen.

Relationale DBs waren zu Beginn aus der technisch Sicht einfach logische Überbauten über Files. Damals wurden in einer Art Middle-Tier Datenpuffer zu Transaktionsbeginn befüllt und im Rahmen einer 4GL orientierten Programmierwelt im Business einfach die Prüfungen in der Transaktion vorgenommen. 'SQL' lief im Hintergrund.

Zu Beginn wurden einfach Dokumente genommen und in Tabellen abgebildet. Aus dem entstand die Normalisierung. Aus der Normalisierung erwuchs Entity Relationship. Zu Beginn war der Fokus auf den Daten und deren Strukturen. Auf dem Weg wurde immer mehr Semantik in das Modell gepackt. SQL ist die Semantik schlicht und ergreifen egal.

Was ist NULL? In einem File wurden mit der Zeit zusätzlich Informationen abgebildet die zuvor nicht da waren und je nach Datensatzart befüllt. Die neue Information wurde einfach hinten drangehängt. Die Werte waren in den alten Datensätzen nicht vorhanden. Damit wurde der Record im die im Programm wurden gehalten in C - was wohl? Undefiniert.


Ich bin ja noch nicht einmal mit der Syntax klargekommen. Dass man einfach so sagen kann WHERE x = (Query) war mir z.B. auch neu.

Das sieht ja schon beschämend einfach aus und scheint zu gehen.

Warum grade Left Join? Das würde Sinn machen wenn man Items ohne Revision hat, aber die gibt es bei mir nicht ��

Geändert von MichaelT (20. Dez 2018 um 10:24 Uhr)
  Mit Zitat antworten Zitat
jobo

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

AW: Bekomme Inner Joins nicht hin

  Alt 20. Dez 2018, 11:04
Ich finde nur das FB embedded die bessere Alternative darstellt.
Das kann man wahrscheinlich hier so sagen, zumindest für einen Entwickler, der in der Produktivwelt mit richtigen RDBMS (MSSQL) arbeitet.
Bei Entwicklungen mit Fokus Android ist das vielleicht noch was anderes.

Aber auch wenn die Ähnlichkeiten groß sind (z.B. single file fällt mir grad noch ein), allein die mögliche Skalierung mit firebird embedded ist sehr viel wert.

OT oder vielleicht auch nicht:
Ich habe die Tage noch etwas über den Tellerrand geschaut und mal durch die top Stacks der nerdigen Platzhirsche geschaut. Was es da alles "krassen" Tools gibt. Bei manchen hab ich einfach mal youtube angeworfen und ein Einsteiger Tutorial durchgeschaut. Meine Empfindung dabei reicht von Unverständnis über "ganz ok" bis "Damit müsste man mal ein Projekt" machen.
Aber was mich schon gewundert hat: Dieses ganze -im weitesten Sinne- noSQL Gepfriemel und die erfreuten Ausraster, wenn es dann ein Tool mal wieder etwas besser macht. "Ich kann ganz gezielt Daten abfragen! ..Wie krass ist das denn?!"

Wie auch immer, ~"lass bloß die Finger von SQL" hier irgendwo vom TE hat mich ja dann gereizt, ein bisschen dazu zu schreiben. Ich sehe keine wirklichen Alternativen und wenn man sich ein wenig drauf einlässt, sehe ich auch eigentlich keine Probleme. Schon gar nicht für jemand der eine syntaktisch komplexe Programmiersprache wie C, C++, Pascal, .. nutzt.
Fairerweise muss man zugestehen, dass Systeme wie SQLite oder mySQL, die zufällige Ergebnisse liefern, nicht gerade eine Ermutigung sind, sich mit ihnen auseinanderzusetzen oder besser vertraut zu machen.

@MichaelT: Eine entspannte Sicht auf das Datenmodell und die passenden Werkzeuge gefällt mir, aber beim Thema Constraints kann ich nicht recht folgen. Es ist keine dumpfe Domainprüfung, es sind (komplexe) Regeln, zumindest kann es das sein. Und warum nicht nutzen, auch für FK, wenn ich es geschenkt bekomme und damit robust und konsistent
werde / bleibe.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Bekomme Inner Joins nicht hin

  Alt 20. Dez 2018, 20:58
Wie auch immer, ~"lass bloß die Finger von SQL" hier irgendwo vom TE hat mich ja dann gereizt, ein bisschen dazu zu schreiben. Ich sehe keine wirklichen Alternativen und wenn man sich ein wenig drauf einlässt, sehe ich auch eigentlich keine Probleme. Schon gar nicht für jemand der eine syntaktisch komplexe Programmiersprache wie C, C++, Pascal, .. nutzt.
Es gibt einen kleinen Unterschied, (SQL-)Datenbanken verlangen eine "Mengendenke" und für viele Programmierer ist es oft unverständlich, daß das Ergebnis eines Select... immer eine zufällige Reihenfolge besitzt.

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

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

AW: Bekomme Inner Joins nicht hin

  Alt 20. Dez 2018, 21:50
Mengenlehre ja! Das hatte ich damals schon in der Grundschule.
Keine Ahnung was die geraucht hatten, vielleicht war das ein geheimes Forschungsprojekt, an dem nur unsere Schule in diesem Kuhkaff teilgenommen hat. Vielleicht kann man nun auch anhand der Lehrpläne für NRW mein Geburtsjahr rekonstruieren, denn das gab's bestimmt nur einmal.
Hab es damals nicht so toll gefunden.

Vielleicht hast Du Recht, das Mengenthema und die Vermittlung scheint problematisch zu sein. Aber hier war es glaub ich nicht das Hauptthema.
Datenmodell und das beste, kompatible Select-Statement ist noch was anderes oder?
Ich mein, niemand hätte sich das sqlite-Group-by-Statement "ausgedacht", das DSG gepostet hat, wenn er nicht die Doku gelesen hätte. Und diese "Kniffe", bei der Verabeitung der speziellen Besonderheiten bei einem Group By Statement in SQLite mit Min oder Max, hat das was mit Mengenlehre zu tun? Das ist eher Brainfuck ala Nerdtool, wie ich sie erwähnt hab.
Oder eher, wenn nicht bald Weihnachten wäre (und es nichtoffiziell in der SQLite Doku stünde), würde ich sagen, DSG hat ein Easteregg entdeckt.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Bekomme Inner Joins nicht hin

  Alt 20. Dez 2018, 22:03
Oh ich glaube Du hast mich falsch verstanden. Man muß "in Mengen" denken, nicht in Listen oder Arrays oder.....
Das hat mit Mengenlehre erst einmal weniger zu tun.

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

Registriert seit: 17. Feb 2005
Ort: Weitingen
672 Beiträge
 
Delphi 10.4 Sydney
 
#49

AW: Bekomme Inner Joins nicht hin

  Alt 20. Dez 2018, 22:19
Das hat mit Mengenlehre erst einmal weniger zu tun.
hmm, eigentlich schon: https://i0.wp.com/business-insights....pg?w=611&ssl=1.
Vereinigungsmenge, Schnittmenge, ...
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Bekomme Inner Joins nicht hin

  Alt 21. Dez 2018, 06:18
In den 70/80 war die Mengenlehre im Lehrplan für Mathematik in den Grundschulen (in BW).
Markus Kinzler
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:11 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