He encontrado algunas consultas SQL en Oracle que contienen '(+)' y no tengo idea de lo que eso significa. ¿Puede alguien explicar su propósito o proporcionar algunos ejemplos de su uso? GraciasSignificado de (+) en consultas SQL
Respuesta
Es el sinónimo de Oracle para OUTER JOIN
.
SELECT *
FROM a, b
WHERE b.id(+) = a.id
da mismo resultado que
SELECT *
FROM a
LEFT OUTER JOIN b
ON b.id = a.id
Notaré que para la siguiente persona, preste atención a lo que ha sucedido con los 'a's y' b' aquí. En el ejemplo, la cláusula from es '[a, b]', pero la comprobación de equivalencia es '[b.id = a.id]'. Mi hábito es mantener la equivalencia '[a.id = b.id]'; entonces leí mal el ejemplo. Una hora de mi vida no volveré; ^) – BIBD
Para eso, interpretaría '(+)' como la forma de Oracle de decir "este lado obtiene nulos cuando no se puede encontrar una coincidencia". Usando mi norma para las equivalencias de '[a.id = b.id]'; luego está ocurriendo un espejo. Si estoy volviendo a escribir la consulta para seguir el estándar moderno, '[a.id = b.id (+)]' se convierte en un EXTERIOR IZQUIERDO y '[a.id (+) = b.id]' se convierte en un DERECHA EXTERIOR. – BIBD
El hecho es que el operador (+) se coloca directamente en la instrucción condicional y en el lado de la tabla opcional (la que tiene permitido contener valores vacíos o nulos dentro del condicional). – Yergalem
El + es un atajo para OUTER JOIN, dependiendo de qué lado te lo pones, indica un LEFT o RIGHT OUTER JOIN
Comprobar la segunda entrada en this forum post para algunos ejemplos
IIRC, el + se usa en versiones anteriores de Oracle para indicar una combinación externa en la sintaxis de unión previa al ANSI SQL. En otras palabras:
select foo,bar
from a, b
where a.id = b.id+
es el equivalente de
select foo,bar
from a left outer join b
on a.id = b.id
NOTA: esto puede ser al revés/ligeramente incorrecto, ya que nunca he utilizado la sintaxis SQL pre-ANSI.
Se usa en las versiones más nuevas de Oracle para aquellos de nosotros que odian ANSI sql. –
@ Mark Brady exactamente. Creo que hace que el propósito de la consulta sea más claro. Y también * odio * ANSI SQL. –
Lo utiliza para asegurarse de que la tabla a la que se une no reduce la cantidad de registros devueltos. Por lo tanto, es útil cuando te unes a una tabla que puede no tener un registro por cada tecla con la que te estás uniendo.
Por ejemplo, si se unían a un cliente y compra tabla:
Para lista de todos clientes y todas sus compras, que desea hacer una combinación externa (+) en la mesa de compra para que los clientes que no ha comprado nada que aún aparezca en su informe.
- 1. Anidamiento de consultas en SQL
- 2. Creador de consultas SQL
- 3. Significado de sp_who Estado en SQL Server
- 4. Relaciones bidireccionales en consultas SQL
- 5. SQL consultas parametrizadas en Android
- 6. Escapar consultas SQL en Codeigniter
- 7. Rieles anidadas consultas SQL
- 8. dos consultas SQL COUNT()?
- 9. Práctica consultas SQL
- 10. Registro NHibernate Consultas SQL
- 11. unir dos consultas SQL
- 12. SQL anexar las consultas
- 13. de consultas SQL: jerárquica Coalesce
- 14. Conversión de consultas personalizadas en SQL
- 15. de consultas SQL con no como en
- 16. Generador de consultas SQL simple en JQuery
- 17. Generador de consultas SQL en rieles
- 18. ¿Cuál es el significado SQL de 0x5E5B7D7E?
- 19. SQL Server Management Studio: significado de icono
- 20. Consultas actualmente en ejecución en SQL Server
- 21. Consultas SQL máximas por página
- 22. Pregunta de la teoría de consultas SQL - consultas de declaración única vs consultas de declaración múltiple
- 23. Resta entre dos consultas sql
- 24. SQL - Combinando varias consultas similares
- 25. Cómo escribir Consultas SQL óptimas
- 26. Optimizar consultas LINQ-to-SQL
- 27. Consultas jerárquicas en SQL Server 2005
- 28. repositorios y consultas con sql en bruto?
- 29. Combinar dos consultas SQL en una mesa
- 30. crear consultas sql en C++/java?
dupe: http://stackoverflow.com/questions/430274/oracle-what-does-do-in-a-where-clause – Alkini
Intenté buscar una respuesta antes de publicar la pregunta pero no recibí ninguna resultados al buscar '+' o '(+). Es extraño que el título de la pregunta en la URL parezca omitir la parte (+) también. – Zabbala
Este es un duplicado de [esta publicación] (http://stackoverflow.com/questions/430274/oracle-what-does-do-in-a-where-clause). Puede encontrar más información allí. –