Vinzenz Mai: mehrere Tabellen verknüpfen

Beitrag lesen

Hallo,

Ich verstehe nicht im geringsten, worum es Dir geht.

Ich beschäftige mich mit MYSQL erst seit ein paar Wochen. Bin da also Anfänger.

Anfänger machen vieles falsch. Das ist normal. Es kann sehr gut sein, dass Dein Tabellendesign fehlerhaft ist. Das ist bei Anfängern auch normal.

Ich brauche also nur EINEN Wert aus einer der vier Tabellen.

Eine Abfrage liefert typischerweise Datensätze aus mehreren Spalten. In einer Spalte eines Datensatzes ist ein Wert enthalten.

Möchtest Du einen Datensatz? Möchtest Du genau einen Wert, d.h. eine Ergebnismenge, die aus einem Datensatz mit einer einzigen Spalte besteht?
Möchtest Du etwas anderes?

Darum gehts. Wie formuliere ich eine solche Abfrage, wenn ich vier Tabellen miteinander verknüpfen will und es in allen vier Tabellen eine Spalte gleichen Namens gibt, die man mittels WHERE abfragen kann?

Interessehalber: wo endet Dein Verständnis dieser beiden Artikel:
Die ellenlangen Erklärungen dort helfen mir nicht, wenn mir niemand die dabei auftauchenden Fragen beantwortet.

Diese Kritik hilft mir wenig, meinen Artikel zu verbessern. Mir wäre es lieber, Du könntest konkretisieren, bis wohin Du etwas verstanden hast - und was Du nicht verstanden hast.

Rouven ist zu Mehrfachjoins alles andere als ellenlang. Es ist der letzte Absatz im Abschnitt "Joins allgemein".

Ein Join verknüpft stets zwei Tabellen zu einer Ergebnistabelle. Beim Mehrfachjoin ist das auch nicht anders: zuerst werden zwei Tabellen per Join zu einer verknüpft, anschließend wird die Zwischenergebnistabelle mit der dritten Tabelle zu einer weiteren verknüpft und so weiter ...

angeschaut. Aus diesem Beitrag dort werde ich nicht schlau und kann mir keine für mich passende Abfrage zusammenbasteln.
Habe mir auch mal den anderen Link angeschaut. Dasselbe.

Das ist mir unverständlich. Selbstverständlich steht dort etwas genau zu Deiner Frage drin. Es gibt sogar einen Punkt im Inhaltsverzeichnis dazu:

Mehrere Tabellen mit JOIN verknüpfen - gleiche Joinspalten. Das ist laut

Wie formuliere ich eine solche Abfrage, wenn ich vier Tabellen miteinander verknüpfen will und es in allen vier Tabellen eine Spalte gleichen Namens gibt, die man mittels WHERE abfragen kann?

genau das, was Du suchst. OK, in meinem Beispiel gibts nur drei Tabellen. Die Erweiterung auf die vierte Tabelle erfolgt aber analog:

SELECT  
    <kommagetrennte liste der gewünschten spalten>  
FROM  
    tabelle1 t1  
JOIN  
    tabelle2 t2  
ON  
    t1.gemeinsamespalte = t2.gemeinsamespalte  
JOIN  
    tabelle3 t3  
ON  
    t1.gemeinsamespalte = t3.gemeinsamespalte  
JOIN  
    tabelle4 t4  
ON  
    t1.gemeinsamespalte = t4.gemeinsamespalte  

oder wie Rouven direkt oberhalb seiner Ausführungen zum Mehfachjoin schreibt, gibt es DBMS (MySQL gehört dazu), die in diesem Fall eine spezielle Syntax anbieten:

USING(gemeinsame_spalte(n))

Ich kann mir allerdings vorstellen, dass Du etwas ganz anderes im Sinn hast:
Du möchtest einen bestimmten Datensatz, der in einer der vier Tabellen vorkommt - wobei diese Tabellen in etwa den gleichen Aufbau haben.

Wenn das der Fall ist, dann kannst Du Dein Ziel mit einer UNION erreichen. Aller Wahrscheinlichkeit nach sind in diesem Fall drei der vier Tabellen überflüssig, ein typischer Tabellendesignfehler von Anfängern.

Um das bewerten zu können, wäre es - wie von mir bereits nachgefragt - sehr hilfreich, den tatsächlichen Grundaufbau der vier Tabellen zu haben, diese mit ein paar Beispieldaten gefüllt, und das gewünschte Ergebnis mit Begründung.

Freundliche Grüße

Vinzenz