Tengo una combinación en dos tablas definidas como una combinación externa izquierda para que todos los registros se devuelvan desde la tabla izquierda incluso si no tienen un registro en la tabla derecha. Sin embargo, también necesito incluir una cláusula where en un campo de la tabla de la derecha, pero .... Todavía quiero que se devuelva una fila de la tabla de la izquierda para cada registro en la tabla de la izquierda, incluso si el condición en la cláusula where donde no se cumple. ¿Hay alguna forma de hacer esto?Unión externa izquierda y una cláusula adicional donde
Respuesta
Sí, puso la condición (llamado un predicado) en las condiciones de combinación
Select [stuff]
From TableA a
Left Join TableB b
On b.Pk = a.Pk
-- [Put your condition here, like this]
And b.Column = somevalue
Usted sólo tiene que poner el predicado en la condición JOIN
. Poniéndolo en la cláusula WHERE
convertiría efectivamente su consulta en una unión interna.
Por ejemplo:
...
From a
Left Join b on a.id = b.id and b.condition = 'x'
SELECT x.fieldA, y.fieldB
FROM x
LEFT OUTER JOIN (select fieldb, fieldc from Y where condition = some_condition)
ON x.fieldc = y.fieldc
select *
from table1 t1
left outer join table2 t2 on t1.id = t2.id
where t1.some_field = nvl(t2.some_field, t1.some_field)
UPD: errr ... no. de esta manera:
select *
from table1 t1
left outer join table2 t2 on t1.id = t2.id
where some_required_value = nvl(t2.some_field, some_required_value)
nvl
es una sintaxis de Oracle que sustituye primer argumento con segundos en caso de que sea null
(que es común para combinaciones externas). Puede usar ifnull
o coalesce
para otras bases de datos.
Por lo tanto, comparar t2.some_field
con sus criterios de búsqueda si se ha cumplido unirse predicado, pero si no es así, entonces usted acaba de regresar fila de table1
, porque some_required_value
comparó a sí mismo siempre será verdad (a menos que sea null
, sin embargo - null = null
rendimientos null
, ni true
no false
le ofrecemos
WHERE (right_table.column=value OR right_table.column IS NULL)
Esto devolverá todas las filas de la tabla 1 y la tabla 2, pero sólo cuando planees. re tabla 1 no tiene una fila correspondiente en la tabla 2 o la fila correspondiente en la tabla 2 coincide con su criterio.
- 1. ¿Qué es mejor ... unión externa izquierda o unión externa derecha?
- 2. Linq-to-Entities: IZQUIERDA UNIÓN EXTERNA con WHERE cláusula y proyección
- 3. Eliminar duplicados de IZQUIERDA UNIÓN EXTERNA
- 4. ¿Es posible poner una unión externa izquierda dentro de otra junta externa izquierda
- 5. mysql consultar dos tablas, UNIÓN y donde cláusula
- 6. SQL where cláusula para la combinación externa izquierda
- 7. Diferencia entre la combinación izquierda y la combinación externa izquierda
- 8. Reemplazar los valores nulos devueltos en IZQUIERDA UNIÓN EXTERNA
- 9. ¿Cuándo o por qué usaría una unión externa derecha en lugar de izquierda?
- 10. Problemas para obtener la UNIÓN EXTERNA IZQUIERDA al trabajo
- 11. Uso de sentencias CASE en IZQUIERDA UNIÓN EXTERNA en SQL
- 12. NHibernate HQL: combinación externa izquierda con "con" cláusula no funciona
- 13. SQL estándar con respecto a las condiciones de unión externa izquierda y dónde
- 14. JUNTA EXTERIOR IZQUIERDA con una cláusula WHERE
- 15. NHibernate combinación externa izquierda
- 16. mysql externa izquierda
- 17. Normalización MongoDB, clave externa y unión
- 18. Actualización y declaraciones de combinación externa izquierda
- 19. LINQ - anidado donde cláusula
- 20. ¿Qué es una UNIÓN IZQUIERDA en PostgreSQL
- 21. usando donde y unión interna en mysql
- 22. Cómo simular una 'unión externa' en core.logic?
- 23. Fecha y hora en donde la cláusula
- 24. en codeigniter como hago una unión con una cláusula where
- 25. UTILIZAR LA UNIÓN MÚLTIPLES IZQUIERDA
- 26. Obteniendo filas distintas de una combinación externa izquierda
- 27. Unión externa completa en django
- 28. problema de combinación externa izquierda
- 29. ACTUALIZAR consulta sin cláusula DONDE
- 30. Cómo agregar una cláusula where en una unión linq (lambda)?
Esto no funciona en ECC6 –