SQL FULL OUTER JOIN von mehr als 2 Tabellen

NichTec

Ensign
Registriert
Juli 2014
Beiträge
167
Hallo zusammen,

ich bin gerade beim Bauen einer Homepage auf folgendes Problem mit meiner MySQL-Datenbank gestoßen. Ich möchte mehr als nur zwei Tabellen miteinander verbinden.

Das klappt wunderbar:
Code:
SELECT
        *
     FROM
        tabelle1 t1
     LEFT OUTER JOIN
        tabelle2 t2 ON (t1.name= t2.name)
     UNION
        SELECT
              *
           FROM
              tabelle1 t1
           RIGHT OUTER JOIN
              tabelle2 t2 ON (t1.name= t2.name)

Aber das hier:
Code:
SELECT
		*
	FROM
		tabelle1 t1
	LEFT OUTER JOIN
		tabelle2 t2 ON (t1.name= t2.name)
	UNION
		SELECT
			*
		FROM
			tabelle1 t1
		RIGHT OUTER JOIN
			tabelle2 t2 ON (t1.name= t2.name)
		UNION
			SELECT
				*
			FROM
				tabelle3 t3
			LEFT OUTER JOIN
				tabelle1 t1 ON (t1.name= t3.name)
spuckt folgenden Fehler zurück:
Code:
Error Code: 1222. The used SELECT statements have a different number of columns

Könnt ihr mir sagen, was ich falsch mache?
 
Mal die "*" durch Spaltennamen ersetzen. Die einzelnen selects in den unions liefern unterschiedliche Anzahl Spalten ...
 
Achte darauf, dass die Tabellen welche du mit UNION vereinst identische Spalten besitzen. Also am besten nicht * verwenden sondern die Spalten explizit nennen und ggf. anpassen (Name, Datentyp).
 
Vielen Dank für die Antworten!

Mein Problem ist nur, dass die Tabellen nicht identische Spalten haben (und auch nicht bekommen werden - da das vom Inhalt keinen Sinn macht). Gibt es eine andere Möglichkeit / Funktion Tabellen mit unterschiedlichen Spalten zusammenzuführen? Also eine große draus zu machen?
 
Kein Union verwenden, das ist hier in dem Fall falsch am Platz. Du kannst ja tabelle 3 einfach noch dazujoinen mit einem 2ten Join
 
Zurück
Oben