AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Verschiedene SQL-Abfragen zu einer verbinden?
Thema durchsuchen
Ansicht
Themen-Optionen

Verschiedene SQL-Abfragen zu einer verbinden?

Ein Thema von ibp · begonnen am 22. Okt 2005 · letzter Beitrag vom 24. Okt 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#1

Verschiedene SQL-Abfragen zu einer verbinden?

  Alt 22. Okt 2005, 21:06
Datenbank: Interbase • Zugriff über: BDE
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 = '20051022220917000299999AND 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 = '20051022220929000299999AND 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 = '20051022220942000299999AND 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
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Verschiedene SQL-Abfragen zu einer verbinden?

  Alt 22. Okt 2005, 21:18
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...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#3

Re: Verschiedene SQL-Abfragen zu einer verbinden?

  Alt 22. Okt 2005, 21:26
...das problem ist, dass es auch abfragen sein können, die nichts miteinander zu tun haben! was ist dann?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Verschiedene SQL-Abfragen zu einer verbinden?

  Alt 22. Okt 2005, 21:28
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...."
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#5

Re: Verschiedene SQL-Abfragen zu einer verbinden?

  Alt 22. Okt 2005, 21:33
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!
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Verschiedene SQL-Abfragen zu einer verbinden?

  Alt 22. Okt 2005, 22:18
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#7

Re: Verschiedene SQL-Abfragen zu einer verbinden?

  Alt 22. Okt 2005, 22:55
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!
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Verschiedene SQL-Abfragen zu einer verbinden?

  Alt 23. Okt 2005, 00:05
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...
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#9

Re: Verschiedene SQL-Abfragen zu einer verbinden?

  Alt 23. Okt 2005, 00:07
@jelly: leider nein, die tabellen sind ganz unterschiedlicher art, haben z.t. referenzen zueinander!
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Verschiedene SQL-Abfragen zu einer verbinden?

  Alt 23. Okt 2005, 11:44
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:35 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