Pude haber hecho lo que deseo con dos solicitudes, pero quiero hacerlo con una sola.Unión interna solo si un campo no está vacío
De hecho, tengo 4 mesas con:
Table 1 : id, sub-id
Table 2 : id, sub-id
Table 3 : id, login
Table 4 : id, login
hago una petición como esa:
SELECT Table1.id, Table1.sub-id, Table2.id, Table2.sub-id,
Table3.login, Table4.login FROM Table1
INNER JOIN Table2 ON (Table1.id = Table2.id AND Table1.sub-id = Table2.sub-id)
INNER JOIN Table3 ON (Table3.id = Table1.id)
INNER JOIN Table4 ON (Table4.id = Table1.id)
WHERE Table1.id = "my_id" AND Table1.sub-id = "my_subid"
que quieren unirse Table3
sólo si id
no está vacío, si está vacía , Me uno al Table4
.
¿Tiene alguna idea, por favor?
He oído que una combinación de la izquierda podría ayudar, pero no estoy tan acostumbrado a estas palabras clave así que ...?
Si puede garantizar que los id de la Tabla 3 y la Tabla 4 no serán iguales, entonces la consulta anterior estaría bien. De lo contrario, tendrías que buscar la ruta SQL dinámica, creo. – anothershrubery
[Explicación visual de las uniones SQL] (http://www.codinghorror.com/blog/archives/000976.html) –