SELECT * FROM users
LEFT JOIN private AS details ON users.id = details.user_id
WHERE users.id = 1 AND users.type = 1
UNION
SELECT * FROM users
LEFT JOIN company AS details ON users.id = details.user_id
WHERE users.id = 1 AND users.type != 1
Ich denke, das ist, was Sie zu tun versuchen, ist es nicht?
Wie Sie jetzt gesagt haben, dass die Anzahl der Spalten unterschiedlich ist, müssten Sie die Spalten angeben, z.
SELECT 'private' AS detailType, users.*, col1, col2, col3, '' FROM users
LEFT JOIN private AS details ON users.id = details.user_id
WHERE users.id = 1 AND users.type = 1
UNION
SELECT 'company', users.*, col1, '', '', col4 FROM users
LEFT JOIN company AS details ON users.id = details.user_id
WHERE users.id = 1 AND users.type != 1
In diesem Beispiel verfügt über einen eigenen Spalten col1, col2 und col3, während Unternehmen col1 und col4 hat, aber Sie wollen sie alle.
Ich weiß nicht, warum jetzt habe ich # 1222 - Die verwendeten SELECT-Anweisungen haben eine andere Anzahl von Spalten – plugowski
, wenn ich nur einen Teil des Codes verwenden, dh. SELECT * FROM users LEFT JOIN privaten AS Details zu users.id = details.user_id WHERE users.id = 1 UND users.type = 1 aber wenn ich UNION verwenden Ich habe Fehler # 1222 – plugowski
Wenn Sie erhalten Haben Sie eine andere Anzahl von Spalten in den zwei Tabellen (privat und Firma), müssen Sie die selbe Anzahl an Spalten im SELECT angeben. Sie können die Leerzeichen mit NULL, '' oder was auch immer Sie wollen füllen. – Cez