Datenbankabfrage über 3 Tabellen
Hallo,
ich benötige eine Starthilfe zu einer DB Abfrage über MySql
Tabelle1 : ID , Name, Beschreibung
Tabelle2 ID, Name, Beschreibung
tabelle1totabelle2 id_tab1 , id_tab2
Nun möchte ich alle Daten der Tabelle 1 haben. Alle .
Rechts neben ID , Name, Beschreibung...
sollen alle Namen der Tabelle 2 stehen, die in tabelle1totabelle2 drin stehen.
--- Puh . Das weiss ich gerade nicht weiter . Es soll also hinterheit alles in einer Zeile
stehen. Geht das ?
SUBSELECTS dürfen nicht sein..
Über Hilfe wäre ich dankbar..
ich benötige eine Starthilfe zu einer DB Abfrage über MySql
Tabelle1 : ID , Name, Beschreibung
Tabelle2 ID, Name, Beschreibung
tabelle1totabelle2 id_tab1 , id_tab2
Nun möchte ich alle Daten der Tabelle 1 haben. Alle .
Rechts neben ID , Name, Beschreibung...
sollen alle Namen der Tabelle 2 stehen, die in tabelle1totabelle2 drin stehen.
--- Puh . Das weiss ich gerade nicht weiter . Es soll also hinterheit alles in einer Zeile
stehen. Geht das ?
SUBSELECTS dürfen nicht sein..
Über Hilfe wäre ich dankbar..
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 73611
Url: https://administrator.de/contentid/73611
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Jörn,
also ich würde mit nem Join arbeiten. In wiefern der bzgl. der Syntax in MYSQL etwas anders (inner/outer weglassen oder nicht, ...) ist, als im MSSQL, weiß ich nicht mehr. Aber immerhin hättest Du hiermit mal nen Anhaltspunkt, wobei ich davon ausgegangen bist, dass Du die Tabellen über die IDs miteinander verknüpfen willst:
SELECT Tabelle1.*, Tabelle2.ID as ID2, Tabelle2.Name as Name2, Tabelle2.Beschreibung as Beschreibung2
FROM Tabelle1
LEFT JOIN Tabelle2 on Tabelle1.ID = Tabelle2.ID
[WHERE Tabelle1...]
oder
SELECT T1.ID as IDT1, T1.Name as NameT1, T1.Beschreibung as BeschreibungT1,
T2.ID as IDT2, T2.Name as NameT2, T2.Beschreibung as BeschreibungT2
FROM Tabelle1 as T1
LEFT JOIN Tabelle2 as T2 on T1.ID = T2.ID
[WHERE T1...]
Bzgl. dem Inner- oder Outer-Join wirst Du wohl mal ein wenig nachlesen müssen, in welchem Fall, welcher Join und welche Reihenfolge der Tabellen wann wie sinnvoll ist, denn je nach Art des Joins kann es z.B. sein, dass im rechten Bereich der Tabelle dann leere Felder auftreten, weil es zur ID der linken Tabelle in der rechten Tabelle keine Entsprechung gibt.
In wiefern die Alias-Vergabe notwendig ist, weiß ich auch nicht mehr, aber wie Du siehst gibt es da ja auch unterschiedliche Möglichkeiten.
Einfach mal ein wenig ausprobieren, dann sollte da schon ne schöne Tabelle rauskommen. ;)
Uuuups, ich hab grad erst gesehen, dass das ganze über 3 Tabellen gehen soll, irgendwie hab ich die 3. Tabelle mehrfach überlesen, also die zusätzlichen Felder entsprechend anhängen und nochmal nen weiteren Join anhängen und dann eben bei der WHERE-Klausel entsprechend einschränken, was man wirklich will.
SELECT T1.ID as IDT1, T1.Name as NameT1, T1.Beschreibung as BeschreibungT1,
T2.ID as IDT2, T2.Name as NameT2, T2.Beschreibung as BeschreibungT2,
tabelle1totabelle2. ...
FROM Tabelle1 as T1
LEFT JOIN Tabelle2 as T2 on T1.ID = T2.ID
LEFT JOIN tabelle1totabelle2 as T12 on T2.Name = T12.Name
...sofern das Feld in tabelle1totabelle2 eben das Feld auch Name heißt.
also ich würde mit nem Join arbeiten. In wiefern der bzgl. der Syntax in MYSQL etwas anders (inner/outer weglassen oder nicht, ...) ist, als im MSSQL, weiß ich nicht mehr. Aber immerhin hättest Du hiermit mal nen Anhaltspunkt, wobei ich davon ausgegangen bist, dass Du die Tabellen über die IDs miteinander verknüpfen willst:
SELECT Tabelle1.*, Tabelle2.ID as ID2, Tabelle2.Name as Name2, Tabelle2.Beschreibung as Beschreibung2
FROM Tabelle1
LEFT JOIN Tabelle2 on Tabelle1.ID = Tabelle2.ID
[WHERE Tabelle1...]
oder
SELECT T1.ID as IDT1, T1.Name as NameT1, T1.Beschreibung as BeschreibungT1,
T2.ID as IDT2, T2.Name as NameT2, T2.Beschreibung as BeschreibungT2
FROM Tabelle1 as T1
LEFT JOIN Tabelle2 as T2 on T1.ID = T2.ID
[WHERE T1...]
Bzgl. dem Inner- oder Outer-Join wirst Du wohl mal ein wenig nachlesen müssen, in welchem Fall, welcher Join und welche Reihenfolge der Tabellen wann wie sinnvoll ist, denn je nach Art des Joins kann es z.B. sein, dass im rechten Bereich der Tabelle dann leere Felder auftreten, weil es zur ID der linken Tabelle in der rechten Tabelle keine Entsprechung gibt.
In wiefern die Alias-Vergabe notwendig ist, weiß ich auch nicht mehr, aber wie Du siehst gibt es da ja auch unterschiedliche Möglichkeiten.
Einfach mal ein wenig ausprobieren, dann sollte da schon ne schöne Tabelle rauskommen. ;)
Uuuups, ich hab grad erst gesehen, dass das ganze über 3 Tabellen gehen soll, irgendwie hab ich die 3. Tabelle mehrfach überlesen, also die zusätzlichen Felder entsprechend anhängen und nochmal nen weiteren Join anhängen und dann eben bei der WHERE-Klausel entsprechend einschränken, was man wirklich will.
SELECT T1.ID as IDT1, T1.Name as NameT1, T1.Beschreibung as BeschreibungT1,
T2.ID as IDT2, T2.Name as NameT2, T2.Beschreibung as BeschreibungT2,
tabelle1totabelle2. ...
FROM Tabelle1 as T1
LEFT JOIN Tabelle2 as T2 on T1.ID = T2.ID
LEFT JOIN tabelle1totabelle2 as T12 on T2.Name = T12.Name
...sofern das Feld in tabelle1totabelle2 eben das Feld auch Name heißt.