![]() |
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:
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?
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 reicht eine schematische antwort! danke schon mal! grüße |
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:
Dann will nicht alle Produkte, sondern nur die einer Produktgruppe. Erstmal Mengenlehre:
SELECT *
From Produkte
SQL-Code:
Ich will die Lagerorte der Produktgruppen auch noch
SELECT *
From Produkte P join Produktgruppen PG on P.pgID = PG.pgID
SQL-Code:
usw...
SELECT *
From Produkte P join Produktgruppen PG on P.pgID = PG.pgID join Lagerorte LO on LO.loID = PG.loID 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... |
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?
|
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...."
|
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!
|
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. |
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! |
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...
|
Re: Verschiedene SQL-Abfragen zu einer verbinden?
@jelly: leider nein, die tabellen sind ganz unterschiedlicher art, haben z.t. referenzen zueinander!
|
Re: Verschiedene SQL-Abfragen zu einer verbinden?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 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