Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL - mehrere Tabellen verbinden (https://www.delphipraxis.net/162523-sql-mehrere-tabellen-verbinden.html)

API 26. Aug 2011 12:29

Datenbank: Access • Version: 2010 • Zugriff über: -

SQL - mehrere Tabellen verbinden
 
Hallo,

Ich versuche 3 Tabellen miteinander zu verbinden.

Aus der Tabelle Personen sollen alle Datensätze angezeigt werden (left join), danach jene Datensätze der anderen 2 Tabellen angehängt werden, welche mit den IDs übereinstimmen.

Irgendwas stimmt nicht mit den Joins, identische Datensätze werden ausgegeben:

Zitat:

Person1, Wert1, Wert2
Person1, Wert1, Wert2
Person1, Wert1, Wert2
Wie muss das SQL abgeändert werden, so dass jede Person nur einmal vorkommt?

Code:
SELECT Personen.Nachname, Tabelle_2.Wert1, Tabelle_3.Wert2
FROM (Personen LEFT JOIN Tabelle_2 ON Personen.ID1 = Tabelle_2.ID1) LEFT JOIN Tabelle_3 ON Personen.ID2 = Tabelle_3.ID2;
1) Tabelle: Personen
Feld: Nachname
Feld: ID1
Feld: ID2

2) Tabelle: Tabelle_2
Feld: Wert1
Feld: ID1

3) Tabelle: Tabelle_3
Feld: Wert2
Feld: ID2

DeddyH 26. Aug 2011 12:34

AW: SQL - mehrere Tabellen verbinden
 
Als Erstes fällt mir DISTINCT ein.
SQL-Code:
SELECT DISTINCT(Personen.Nachname, Tabelle_2.Wert1, Tabelle_3.Wert2)
FROM ...

Alaitoc 26. Aug 2011 12:36

AW: SQL - mehrere Tabellen verbinden
 
Da war wohl jemand ne Sekudne schneller ;)

Jepp DISTINCT sollte dir weiterhelfen :)

Damit mein Beitrag nicht völlig umsonst ist, eine ganz hilfreiche Seite für SQL:
http://www.sql-und-xml.de/sql-tutorial/

MfG Alaitoc

mkinzler 26. Aug 2011 12:36

AW: SQL - mehrere Tabellen verbinden
 
SQL-Code:
SELECT
    Personen.Nachname,
    Tabelle_2.Wert1,
    Tabelle_3.Wert2
FROM
    Personen
        LEFT JOIN Tabelle_2 ON Tabelle_2.ID1 = Personen.ID1 
        LEFT JOIN Tabelle_3 ON Tabelle_3.ID2 = Personen.ID2;

API 26. Aug 2011 17:33

AW: SQL - mehrere Tabellen verbinden
 
DISTINCT scheint die Lösung zu sei, habe überhaupt nicht daran gedacht, so fixiert war ich auf die JOINS und dachte, es liege an dessen Konstruktion...

@Markus: Dein Vorschlag gibt ein Fehler:

Zitat:

Syntax error (missing operator) in query expression 'Tabelle_2.ID1 = Personen.ID1
LEFT JOIN Tabelle_3 ON Tabelle_3.ID2 = Personen.ID'.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 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-2025 by Thomas Breitkreuz