Cuando escribo consultas SQL, a menudo pienso que "no hay forma de hacer esto con una sola consulta". Cuando eso sucede, a menudo recurro a procedimientos almacenados o funciones con valores de tabla de varias declaraciones que usan tablas temporales (de un tipo u otro) y terminan simplemente combinando los resultados y devolviendo la tabla de resultados.Pregunta de la teoría de consultas SQL - consultas de declaración única vs consultas de declaración múltiple
Me pregunto si alguien sabe, simplemente como una cuestión de teoría, si debería ser posible escribir CUALQUIER consulta que devuelva un solo conjunto de resultados como una sola consulta (no varias declaraciones). Obviamente, estoy ignorando los puntos relevantes tales como la legibilidad del código y el mantenimiento, incluso el rendimiento/eficiencia de la consulta. Se trata más de teoría, se puede hacer ... y no se preocupe, ciertamente no planeo comenzar a forzarme a escribir una consulta de declaración única cuando el enunciado múltiple se adapte mejor a mi propósito en todos los casos, pero podría hacerme pensar dos veces o un poco más sobre si hay una forma viable de obtener el resultado de una sola consulta.
Supongo que algunos parámetros están en orden. Estoy pensando en una base de datos relacional (como MS SQL) con tablas que siguen las mejores prácticas comunes (como que todas las tablas tengan una clave principal, etc.).
Nota: (. Referencia al material de banda o algo similar) con el fin de ganar 'respuesta aceptada' en esto, usted tendrá que proporcionar una prueba definitiva
... o un contraejemplo. –
Antes de que pueda responder a esta pregunta, necesita ser mucho más específico sobre lo que quiere decir con "SQL en teoría". El SQL utilizado en la práctica varía entre los DBMS y entre las versiones de DBMS. Necesita estandarizar en un conjunto estándar de construcciones de SQL. Por ejemplo, ¿qué tipos de subconsultas permite? Además, es posible que desee abstraer algunos detalles, por ejemplo, la "teoría de consultas SQL" más común, que utiliza cálculo relacional o álgebra como una abstracción de SQL, trata las tablas como conjuntos de filas, no listas ordenadas de filas. – reinierpost