Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Verschiedene SQL-Abfragen zu einer verbinden? (https://www.delphipraxis.net/55536-verschiedene-sql-abfragen-zu-einer-verbinden.html)

ibp 22. Okt 2005 21:06

Datenbank: Interbase • Zugriff über: BDE

Verschiedene SQL-Abfragen zu einer verbinden?
 
Hallo,

wie kann ich verschidene sql-abfragen zu einer verbinden?

z.B.:

SQL-Code:
SELECT ob_pkey,ob_parkey,ob_bez,ob_auftragnr,ob_strasse,ob_plz,ob_ort,ob_hinweis,ob_bem,ob_rfolge,ob_obrfolge,ob_vertraglaufz,ob_investzeitr,ob_baujahr,ob_renovjahr,ob_bundesland,ob_auftrnrkreisav,ob_auftrnrkreismi,ob_losnr,ob_posnr,ob_zustandsgrd,ob_kgr,kgr_nr,ob_ktrg,ktrg_nr,ob_kst,kst_nr,ob_kart,kart_nr
FROM objekt,kostengruppen,kostentraeger,kostenstellen,kostenart
WHERE (ob_parkey = '20051022220917000299999' AND kgr_pkey=ob_kgr AND ktrg_pkey=ob_ktrg AND kst_pkey=ob_kst AND kart_pkey=ob_kart)
SQL-Code:
SELECT li_pkey,li_parkey,li_bez,li_auftragnr,li_strasse,li_plz,li_ort,li_hinweis,li_bem,li_lirfolge,li_rfolge,li_baujahr,li_renovjahr,li_bundesland,li_losnr,li_posnr,li_zustandsgrd,li_kart,kart_nr,li_ktrg,ktrg_nr,li_kst,kst_nr,li_kgr,kgr_nr
FROM liegenschaft,kostenart,kostentraeger,kostenstellen,kostengruppen
WHERE (li_parkey = '20051022220929000299999' AND kart_pkey=li_kart AND ktrg_pkey=li_ktrg AND kst_pkey=li_kst AND kgr_pkey=li_kgr)
SQL-Code:
SELECT btfg_pkey,btfg_parkey,btfg_bez,btfg_objekt,ob_bez,btfg_rfolge,btfg_hinweis,btfg_bem
FROM betrfuehrung,objekt
WHERE (btfg_parkey = '20051022220942000299999' AND ob_pkey=btfg_objekt)
es gibt nun einige gleiche tabellen und felder, wie kann ich daraus eine einzelne abfrage machen, so dass nur noch select ....{alle felder}... from ...{tabellen}... where ....{bedingungen} steht?

es reicht eine schematische antwort!
danke schon mal!
grüße

alzaimar 22. Okt 2005 21:18

Re: Verschiedene SQL-Abfragen zu einer verbinden?
 
Hmmm... Eigentlich ganz einfach... Erstmal ein Tip von mir:
Anstatt SELECT * From A,B where A.X=B.Y solltest Du JOINS verwenden: SELECT * from A JOIN B on A.X=B.Y
Das ist im Prinzip das Gleiche, ist aber übersichtlicher, weil eben die Bedingungen, die Tabellen verbinden von denen getrennt werden, die das Ergebnis filtern.

So, nun stell Dir jede Tabelle als Kreis vor (Stichwort: Mengenlehre). Zwei sich überschneidende Kreise sind ja verbunden ('joined'!).

Ich gehe immer schrittweise vor, normalerweise so: Wenn ich Produkte sehen will, kommt diese Tabelle zuerst:
SQL-Code:
SELECT * 
From Produkte
Dann will nicht alle Produkte, sondern nur die einer Produktgruppe. Erstmal Mengenlehre:
SQL-Code:
SELECT * 
From Produkte P join Produktgruppen PG on P.pgID = PG.pgID
Ich will die Lagerorte der Produktgruppen auch noch
SQL-Code:
SELECT * 
From Produkte P
     join Produktgruppen PG on P.pgID = PG.pgID
     join Lagerorte LO on LO.loID = PG.loID
usw...
Es ist die Denkweise, wie vom gewünschten Resultat die Basistabelle ('Ich will ja eigentlich Produkte sehen') extrahiert, um dann in einigen Schritten zum fertigen SELECT zu gelangen.

Noch ein Tipp zum Schluss: Verwende Views, um logisch zusammenhängende Tabellenverbindungen ('JOIN') erstmal zu gruppieren. So wäre z.B. eine View 'View_Produkt_Und_Gruppen' sicherlich einfacher...

ibp 22. Okt 2005 21:26

Re: Verschiedene SQL-Abfragen zu einer verbinden?
 
...das problem ist, dass es auch abfragen sein können, die nichts miteinander zu tun haben! was ist dann?

alzaimar 22. Okt 2005 21:28

Re: Verschiedene SQL-Abfragen zu einer verbinden?
 
Na, dann ist es eben das klassische 'Äpfel mit Birnen Vergleichen'. Damit ich was dazulerne, unter welchen Voraussetzungen möchtest du den Daten verbinden, die nichts miteinander zu tun haben? Es reicht ein Beispiel so wie "Zeig mir alle Produkte...."

ibp 22. Okt 2005 21:33

Re: Verschiedene SQL-Abfragen zu einer verbinden?
 
ich habe eine baumstruktur, jeder knoten ist ein datensatz. beim selektieren eines knotens werden alle knoten der ebene in ein grid geladen. nun kommt es aber vor, dass in der jeweiligen ebene ganz unterschiedliche tabellen angesprochen werden können. ich wollte nun mit einer abfrage alle datensätze aus der db lesen um sie dann in das grid zu schreiben!

alzaimar 22. Okt 2005 22:18

Re: Verschiedene SQL-Abfragen zu einer verbinden?
 
Das wird, vorausgesetzt, ich habe dich richtig verstanden, nicht gehen. Pro Knoten ist es ein Record aus einem SELECT, richtig?
Dann nimm ein TDBGrid und setze das individuelle SELECT beim Anklicken eines Knotens über eine T(ADO)Query einfach ab und -schwupps- zeigt das TDBGrid eben die Daten an, die vom TDataset kommen.

ibp 22. Okt 2005 22:55

Re: Verschiedene SQL-Abfragen zu einer verbinden?
 
ich arbeite nicht mit dem einem dbgrid, das ist mir in der datenbehandlung zu unflexibel ausserdem kann ich da eben nicht mehrere tabellen gleichzeitig abbilden! bin gerade daran das auf einem anderen weg zu lösen! ich lade die knoten mit gleicher tabelle und verteile dann diese im grid nach dem muster der knoten!

aber danke für die hilfe!

Jelly 23. Okt 2005 00:05

Re: Verschiedene SQL-Abfragen zu einer verbinden?
 
Du kannst UNIONS benutzen. Vorraussetzung ist allerdings, dass in allen Teilabfragen die gleiche Anzahl der Felder ist, und diese zudem auch noch den gleichen Namen haben müssen. Zur Not musst du also Aliasname benutzen...

ibp 23. Okt 2005 00:07

Re: Verschiedene SQL-Abfragen zu einer verbinden?
 
@jelly: leider nein, die tabellen sind ganz unterschiedlicher art, haben z.t. referenzen zueinander!

Jelly 23. Okt 2005 11:44

Re: Verschiedene SQL-Abfragen zu einer verbinden?
 
Zitat:

Zitat von ibp
@jelly: leider nein, die tabellen sind ganz unterschiedlicher art, haben z.t. referenzen zueinander!

Sag ich ja, dann musst du halt die Felder im Resultset anpassen. Ist lediglich etwas Tipparbeit. Das Ganze Ergebnis kannst Du aber anschliessend in eine View packen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:21 Uhr.
Seite 1 von 2  1 2      

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