AGB  ·  Datenschutz  ·  Impressum  







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

Datenbank Abfrage über 2 Tabellen

Ein Thema von Youuuu · begonnen am 27. Apr 2021 · letzter Beitrag vom 27. Apr 2021
Antwort Antwort
Youuuu

Registriert seit: 9. Okt 2016
60 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Datenbank Abfrage über 2 Tabellen

  Alt 27. Apr 2021, 11:16
Wäre sinnvoll, den bei einem Join würdest Du ja eine Zeile pro Dokument erhalten.
Theoretisch wäre auch eine Pivot möglich (pro Dokument eine weiteres Feld)


Richtig, ich würde bei einem weiteren Join nur ein Dokument ausgegeben bekommen statt aller.

Ich verwende hier MySQL, wie meinst du das mit Pivot?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.673 Beiträge
 
Delphi 12 Athens
 
#2

AW: Datenbank Abfrage über 2 Tabellen

  Alt 27. Apr 2021, 11:24
Wäre sinnvoll, den bei einem Join würdest Du ja eine Zeile pro Dokument erhalten.
Theoretisch wäre auch eine Pivot möglich (pro Dokument eine weiteres Feld)


Richtig, ich würde bei einem weiteren Join nur ein Dokument ausgegeben bekommen statt aller.
Wie kommst Du darauf? Du bekommst je Dokument einen Datensatz, der dann aber auch alle Daten aus den anderen Tabellen enthält.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Youuuu

Registriert seit: 9. Okt 2016
60 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Datenbank Abfrage über 2 Tabellen

  Alt 27. Apr 2021, 14:08
Wäre sinnvoll, den bei einem Join würdest Du ja eine Zeile pro Dokument erhalten.
Theoretisch wäre auch eine Pivot möglich (pro Dokument eine weiteres Feld)


Richtig, ich würde bei einem weiteren Join nur ein Dokument ausgegeben bekommen statt aller.
Wie kommst Du darauf? Du bekommst je Dokument einen Datensatz, der dann aber auch alle Daten aus den anderen Tabellen enthält.

Wie meinst du das, also wenn als Hauptabfrage doch "'FROM '+DB_AUSGABEN+' AS A" genutzt wird und ich springe auf den nächsten Datensatz, dann springt er doch in dieser Tabelle auf den nächsten Datensatz und nicht in der Dokumententabelle auf das nächste Dokument?

Etwas schwierig für mich das hier genau zu beschreiben, ich hoffe man versteht es?



@mkinzler

In der Dokumententabelle, liegen lediglich die Pfade zu den Dokumenten auf dem FTP Server.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.673 Beiträge
 
Delphi 12 Athens
 
#4

AW: Datenbank Abfrage über 2 Tabellen

  Alt 27. Apr 2021, 14:51
Er springt nicht in der Tabelle auf den nächsten Datensatz, sondern in Deiner Ergebnismenge. Probier doch Deine Statements erst einmal in einem SQL-Editor aus, dann siehst Du auch besser, was Du machen musst.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.605 Beiträge
 
Delphi 7 Professional
 
#5

AW: Datenbank Abfrage über 2 Tabellen

  Alt 27. Apr 2021, 15:25
Code:
Hauptabfrage doch "'FROM '+DB_AUSGABEN+' AS A"
ist keine Haupt-... oder sonstwie privilegiert Teil einer Abfrage, sondern nur ein gleichberechtigter Teil der Ergebnismenge.

"'FROM '+DB_AUSGABEN+' AS A" ist keinen Cent mehr oder weniger Wert als die per (Left)-Join dazugeholten Daten der anderen Tabellen.

Schreib doch erstmal mein obiges SQL auf Deine Belange um. Versorge eine Query mit dem daraus resultierenden SQL. Verbinde die Query per DataSource mit 'nem DBGrid und schau Dir dort das Ergebnis an. (Oder nutze das von Dir bevorzugte Werkzeug zum Umgang mit Deiner Datenbank dazu.)

Eine Ausgabe mit drei Dokumenten wird dort in drei Datensätzen dargestellt werden, die sich nur in den Daten der Dokumente unterscheiden, nämlich je Dokument eine Zeile. Die Daten der Ausgabe werden in den drei Sätzen absolut identisch sein.

Geändert von Delphi.Narium (27. Apr 2021 um 17:02 Uhr) Grund: Ewig diese verd... Schreibfehler :-(
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.782 Beiträge
 
Delphi 12 Athens
 
#6

AW: Datenbank Abfrage über 2 Tabellen

  Alt 27. Apr 2021, 16:17
Jo, es gibt ja genug externe SQL-Editoren, wo man so Statements erstmal in Ruhe testen kann.

Da wir aber auch viele Komponenten (Query-Komponente und die Grids) abgeleitet haben,
haben wir einen "kleinen" eigenen SQL-Editor als eigenes Fenster ins Programm eingebaut, da man dort auch nochmal alles mit den endgültigen Komponenten in einer Grundkonfiguration testen kann, ohne überall in den Oberflächen "blind" rumexperimentieren zu müssen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
jobo

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

AW: Datenbank Abfrage über 2 Tabellen

  Alt 27. Apr 2021, 20:50
Welcher der nächste Datensatz ist(wo er bei .next hinspringt) hängt nur von Deiner Order By Clause ab. Die gesamte Ergebnismenge wird bei Dir nach timestamp sortiert. Leider ist das Statement so gebaut, dass man nicht erkennen kann, aus welcher Tabelle die Spalte timestamp stammt.

Eine SQL Ergebnismenge verhält sich nicht wie ein Master Detail Datasource Beziehung in Delphi, wo 2 separate Datenmengen automatisch aktualisiert werden, je nach definierter Beziehung und Navigation.

Da niemand Dein Datenmodell kennt, sind die Fragen auch nicht treffend zu beantworten. Es gibt verschiedene Beziehungsmöglichkeiten und noch verschiedenere Datenbefüllungen in Deiner konkreten Datenbank.
Gruß, Jo
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.605 Beiträge
 
Delphi 7 Professional
 
#8

AW: Datenbank Abfrage über 2 Tabellen

  Alt 27. Apr 2021, 11:28
Suchbegriff: mysql pivot -> https://modern-sql.com/de/anwendung/pivot
Richtig, so mach ich es aktuell mit einer zusätzlichen Abfrage die Dokumente laden, dadurch wird allerdings die Abfragezeit natürlich immer weiter erhöht.
Nicht zwingend, der Left-Join mit zusätzlichen Dokumenten muss nicht schneller sein, als das einzelne Nachladen der Dokumente je Ausgabe.

Was sind bei Dir Dokumente konkret. Je Dokument ein Datensatz mit Infos zum Dokument oder Blobs mit mehr oder weniger großen Inhalt wie z. B. PDFs ...

Wenn da so richtig viele PDFs per Left-Join geladen werden, kann das schon ganz schön an der Performance kratzen, wenn es mal mit dem Speicher eng wird, ...
  Mit Zitat antworten Zitat
Antwort Antwort


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:43 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-2025 by Thomas Breitkreuz