AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage über 3 Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage über 3 Tabellen

Ein Thema von Piro · begonnen am 30. Nov 2009 · letzter Beitrag vom 30. Nov 2009
Antwort Antwort
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

SQL Abfrage über 3 Tabellen

  Alt 30. Nov 2009, 15:15
Datenbank: MS SQL Express • Version: 2005 • Zugriff über: ADO
Moin zusammen,

ich benötige Hilfe bei einer Abfrage über 3 Tabellen.

1. Tabelle: Sites
#id
site
sitennr

2. Tabelle: HSRP
#id
hsrp
site_id#

3. Tabelle: Subnets
#id
vlan
hsrp
site_id#


Die 1. Tabelle: Sites enthält folgende Daten:
id|site|sitenr
1 |Kiel| 140
2 |Ulm| 325

Die 2. Tabelle: HSRP enthält 8 Datensätze, die wie folgt aussehen:
id|hsrp|site_id
1 | 23 | 1
2 | 24 | 1
3 | 25 | 1
4 | 26 | 1
5 | 23 | 2
6 | 24 | 2
7 | 25 | 2
8 | 26 | 2

Die 3. Tabelle: Subnets enthält folgende Daten:
#id|vlan|hsrp|site_id#
1 |2101| 23 | 1
2 |3402| 24 | 2
3 |1200| 25 | 1


Die 2. Tabelle: HSRP muss komplett angezeigt und die jeweiligen Daten aus den anderen Tabellen hinzugefügt werden.
Die Tabelle: HSRP steht mit dem Fremdschlüssel site_id# der Tabelle: Sites in Verbindung.
Desweiter steht die Tabelle: HSRP mit dem Attribute hsrp der Tabelle: Subnets in Bezug.
Die Tabelle: Subnets steht mit dem Fremdschlüssel site_id# mit der Tabelle: Sites in Bezug.

Ergebnis
id|hsrp|site|sitenr|vlan
1 | 23 |Kiel|140|2101
2 | 24 |Kiel|140|NULL
3 | 25 |Kiel|140|1200
4 | 26 |Kiel|140|NULL
5 | 23 |Ulm|325|NULL
6 | 24 |Ulm|325|3402
7 | 25 |Ulm|325|NULL
8 | 26 |Ulm|325|NULL

Mit folgendem SQL Statement kann ich die Tabellen: HSRP und SITES abfragen:
SQL-Code:
SELECT network_hsrp.id,
       network_hsrp.hsrp,
       network_hsrp.site_id,
       network_sites.site,
       network_sites.sitenr
FROM network_hsrp, network_sites
WHERE network_hsrp.site_id = network_sites.id
Mit folgendem SQL Statement kann ich die Tabellen: HSRP und Subnets abfragen:
SQL-Code:
SELECT network_hsrp.id,
       network_hsrp.hsrp,
       network_subnets.vlan,
       network_subnets.hsrp as subnethsrp
FROM network_hsrp
       LEFT OUTER JOIN network_subnets
       ON network_hsrp.hsrp = network_subnets.hsrp
Es wäre schön, wenn einer von euch wüsste, wie man beide Abfragen kompiniert, dass das Ergebnis von oben herauskommt.

Danke im voraus.

Sven
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: SQL Abfrage über 3 Tabellen

  Alt 30. Nov 2009, 15:38
Hi,

Vielleicht so:

EDIT: Verbessert:

SQL-Code:
SELECT
  hsrp.id,
  hsrp.hsrp,
  site.site,
  site.sitenr,
  subnets.vlan
FROM site
JOIN hsrp on (hsrp.site_id = site.id)
LEFT OUTER JOIN subnets on ((subnets.site_id = site.id) and (subnets.hsrp = hsrp.hsrp))
Habs aber nicht getestet. Funktioniert!
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#3

Re: SQL Abfrage über 3 Tabellen

  Alt 30. Nov 2009, 16:00
Vielen Dank.

Hat geklappt.

Schönen Abend noch.
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: SQL Abfrage über 3 Tabellen

  Alt 30. Nov 2009, 16:00
@N. General:Stimmt. Oder sehr Änlich:
SQL-Code:
SELECT
   HSRP.id
   , HSRP.hsrp
   , Sites.site
   , Sites.seitenr
   , Subnets.vlan
FROM HSRP
LEFT OUTER JOIN Sites
   ON HSRP.site_id = Sites.id
LEFT OUTER JOIN Subnets
   ON HSRP.hsrp = Subnets.hsrp AND Sites.id = Subnets.site_id
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  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 11:52 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