AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [SQL] Hilfe bei Verknüpfung zweier Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL] Hilfe bei Verknüpfung zweier Tabellen

Ein Thema von Nicolai1234 · begonnen am 4. Aug 2009 · letzter Beitrag vom 7. Aug 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#11

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 6. Aug 2009, 12:40
Also ich bevorzuge die "alte" Syntax (jo, Oracelaner),
wenn ich diese joins sehe, die ACCESS erstellt (ich weiß, ACCESS ist nicht satisfaktionsfähig) dann hab ich immer das Gefühl einen Basic-Source mit ganz vielen gotos vor mir zu haben.

funktioniert, aber undurchschaubar.

Gruß
K-H
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 6. Aug 2009, 12:48
Ich finde explizite Joins richtig eingerückt aber übersichtlicher
Markus Kinzler
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#13

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 6. Aug 2009, 12:49
Zitat von p80286:
Also ich bevorzuge die "alte" Syntax (jo, Oracelaner),
wenn ich diese joins sehe, die ACCESS erstellt (ich weiß, ACCESS ist nicht satisfaktionsfähig) dann hab ich immer das Gefühl einen Basic-Source mit ganz vielen gotos vor mir zu haben.

funktioniert, aber undurchschaubar.

Gruß
K-H
ich hänge mich hier auch noch dran
wobei
anstatt
SELECT T1.*, T2.* ...

select *
FROM Tabelle1 T1, Tabelle2 T2
WHERE T2.uid = T1.uid
AND T1.gid = 1

ja ausreichen ist.
ich finde diese "alte" Syntax liest sich irgendwie besser, und ich gebs zu ich hab auch bei oracle gelernt

Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 6. Aug 2009, 12:55
Was ist den an

SQL-Code:
select
    T1.*,
    T2.*
FROM
    Tabelle1 T1
        join Tabelle2 T2 on T2.uid = T1.uid
WHERE
    T1.gid = 1;
unübersichtlich?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#15

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 6. Aug 2009, 16:15
Okay, brechen wir einen Glaubenskrieg vom Zaun!!

SQL-Code:
SELECT VTP_TABDOS.CODDOS, VTP_TABBRE.IDEPAY, VTP_TABEVE.CODEVE, VTP_TABSUI.DATECH
FROM (((VTP_TABDOS INNER JOIN VTP_TABBRE ON VTP_TABDOS.IDEDOS = VTP_TABBRE.IDEDOS) INNER JOIN VTP_TABPAY ON VTP_TABBRE.IDEPAY = VTP_TABPAY.IDEPAY) INNER JOIN VTP_TABSUI ON VTP_TABBRE.IDEBRE = VTP_TABSUI.IDEDOS) INNER JOIN VTP_TABEVE ON VTP_TABSUI.IDEECH = VTP_TABEVE.IDEEVE;
SQL-Code:
SELECT VTP_TABDOS.CODDOS, VTP_TABBRE.IDEPAY, VTP_TABEVE.CODEVE, VTP_TABSUI.DATECH
FROM VTP_TABDOS,
     VTP_TABBRE,
     VTP_TABPAY,
     VTP_TABSUI,
     VTP_TABEVE
WHERE VTP_TABDOS.IDEDOS = VTP_TABBRE.IDEDOS
  and VTP_TABBRE.IDEPAY = VTP_TABPAY.IDEPAY
  and VTP_TABBRE.IDEBRE = VTP_TABSUI.IDEDOS
  and VTP_TABSUI.IDEECH = VTP_TABEVE.IDEEVE
das obere Beispiel hat Access generiert da bin ich unschuldig!
Was mich z.B. stört
(VTP_TABDOS INNER JOIN VTP_TABBRE ......) INNER JOIN VTP_TABPAY ON .... Da wird eine Tabelle (VTP_TABPAY) mit zwei anderen Tabellen (VTP_TABDOS,VTP_TABBRE) verbunden. erst im "Nachsatz" lese ich, daß die Verbindung über
VTP_TABBRE.IDEPAY = VTP_TABPAY.IDEPAY erfolgt.

In der unteren Version erscheint mir das einfacher zu überblicken, da pro Zeile immer nur zwei Tabellen miteinander verbunden werden, insbesonders wenn noch ein paar Tabellen dazu kommen.

Was gegen die "alte" Version spricht, ist die Vermengung von "Tabellenverbindungen" und "Wertabfragen". Wenn man da eine Fremdabfrage in die Finger bekommt ist es mit der Übersichtlichkeit schnell dahin.

Für die "alte" Version spricht die (meiner Meinung nach) einfache Auskommentierbarkeit wenn z.b. eine Tabelle hinzu kommen soll oder entfernt werden soll .

Gruß
K-H
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 6. Aug 2009, 17:44
Nur weil der Code den Access erzeugt suboptimal und unübersichtlich ist würde ich nicht die Syntax verdammen.

SQL-Code:
SELECT
    VTP_TABDOS.CODDOS, VTP_TABBRE.IDEPAY, VTP_TABEVE.CODEVE, VTP_TABSUI.DATECH
FROM
    VTP_TABDOS
        join VTP_TABBRE on VTP_TABBRE.IDEDOS = VTP_TABDOS.IDEDOS
            join VTP_TABSUI on VTP_TABSUI.IDEDOS = VTP_TABBRE.IDEBRE
                join join VTP_TABEVE on VTP_TABEVE.IDEEVE = VTP_TABSUI.IDEECH
            join VTP_TABPAY on VTP_TABPAY.IDEPAY = VTP_TABBRE.IDEPAY;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#17

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 7. Aug 2009, 12:39
Zitat von mkinzler:
Nur weil der Code den Access erzeugt suboptimal und unübersichtlich ist würde ich nicht die Syntax verdammen.
ist zwar ein alter Hut, aber was war ist ...

Nur, bei den Beispielen fällt es schwer eine andere Syntax zu akzeptieren.

SQL-Code:
SELECT
    VTP_TABDOS.CODDOS, VTP_TABBRE.IDEPAY, VTP_TABEVE.CODEVE, VTP_TABSUI.DATECH
FROM
    VTP_TABDOS
        join VTP_TABBRE on VTP_TABBRE.IDEDOS = VTP_TABDOS.IDEDOS
            join VTP_TABSUI on VTP_TABSUI.IDEDOS = VTP_TABBRE.IDEBRE
                join join VTP_TABEVE on VTP_TABEVE.IDEEVE = VTP_TABSUI.IDEECH
            join VTP_TABPAY on VTP_TABPAY.IDEPAY = VTP_TABBRE.IDEPAY;
könnte man dies in eine solche Allgemeinform überführen:

SQL-Code:
...
FROM tabelle1
     JOIN tabelle2 ON tabelle2.spa = tabellex.spy
     JOIN tabelle3 ON tabelle3.spa = ...
...
und um NULL-Werte zu beachten


SQL-Code:
FROM Tabelle1,Tabelle2,Tabelle3
WHERE Tabelle1.id0 = Tabelle2.id0
  AND Tabelle1.ID1 = Tabelle3.id1(+)


FROM Tabelle1
     JOIN Tabelle2 ON Tabelle1.id0 = Tabelle2.id0
     LEFT JOIN Tabelle3 ON Tabelle3.id1=Tabelle1.id1
oder
     RIGHT JOIN Tabelle3 ON Tabelle1.id1 = Tabelle3.id1
Gruß
K-H
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:28 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