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
Creo que eso es lo que está tratando de hacer, ¿verdad?
Como ha dicho ahora que el número de columnas es diferente, debe especificar las columnas, p.
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
En este ejemplo, privado tiene columnas col1, col2 y col3, mientras que la compañía tiene col1 y col4, pero todos ellos quieren.
No sé por qué ahora tengo # 1222 - Las instrucciones SELECT utilizadas tienen un número diferente de columnas – plugowski
si utilizo solo una parte del código, es decir. SELECT * FROM usuarios LEFT JOIN privada como detalles sobre users.id = details.user_id DONDE users.id = 1 y = 1 users.type pero si uso UNIÓN He obtener error # 1222 – plugowski
Si tener un número diferente de columnas en las dos tablas (privadas y de empresa), entonces deberá especificar el mismo número de columnas en SELECT. Puede completar los espacios en blanco usando NULL, '', o lo que quiera. – Cez