Bedingte Verknüpfungen in MySQL: Tabellen basierend auf einem Aufzählungstyp dynamisch verknüpfen
Problem:
Stellen Sie sich ein MySQL-Tabellenschema mit den Spalten id1, id2 und type vor. Die Typspalte ist ein Aufzählungswert, der den Namen einer anderen Tabelle angibt. Die Aufgabe besteht darin, einen Join mit der angegebenen Tabelle basierend auf dem Wert von „type“ durchzuführen.
Zum Beispiel möchten Sie die folgenden bedingten Joins durchführen:
Lösung:
Während MySQL bedingte Joins nicht direkt unterstützt, besteht eine Problemumgehung darin, einen Multi-Table-Left-Join mit einem Groß-/Kleinschreibungsoperator zu verwenden:
SELECT t.id, t.type, t2.id AS id2, t3.id AS id3 FROM t LEFT JOIN t2 ON t2.id = t.id AND t.type = 't2' LEFT JOIN t3 ON t3.id = t.id AND t.type = 't3'
In dieser Abfrage:
Hinweis:
Diese Lösung erfordert, dass alle potenziell verbundenen Tabellen in der Datenbank vorhanden sind, unabhängig vom Wert des Typs.
Das obige ist der detaillierte Inhalt vonWie kann ich bedingte Verknüpfungen in MySQL basierend auf einem Aufzählungstyp durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!