Estoy tratando de implementar un generador de consultas automático, y mi enfoque para un tipo de consultas es tener uniones anidadas de tal manera Seleccionar * De ((Q1 unirse a Q2 en Q1.x = Q2.x) Como T1 Unir Q3 en T1. x = Q3) Como T2) Únete a Q4 en T2.x = Q4.x) Como T3 ... y así sucesivamente
Traté de implementarlo de tal manera, pero la sintaxis parece estar equivocada
SELECT
*
FROM
(
(
SELECT
*
FROM
(
Select
*
From
Customers
) AS q11
INNER JOIN (
Select
*
From
Customers
) AS q12 ON q11.customerID = q12.customerID
)
) q1
JOIN (
Select
*
from
Customers
) q2 ON q1.q11.CustomerID = q2.CustomerID
3 respuestas
Una versión un poco más compacta sería:
;WITH Data AS(Select * From Customers)
SELECT
*
FROM
Data D1
INNER JOIN Data D2 ON D2.ID=D1.ID
INNER JOIN Data D3 ON D3.ID=D2.ID
INNER JOIN Data D4 ON D4.ID=D3.ID
INNER JOIN Data D5 ON D5.ID=D4.ID
INNER JOIN Data D6 ON D6.ID=D5.ID
INNER JOIN Data D7 ON D7.ID=D6.ID
Y aún más compacta:
SELECT * FROM D D1
JOIN D D2 ON D2.ID=D1.ID
JOIN D D3 ON D3.ID=D2.ID
JOIN D D4 ON D4.ID=D3.ID
JOIN D D5 ON D5.ID=D4.ID
JOIN D D6 ON D6.ID=D5.ID
JOIN D D7 ON D7.ID=D6.ID
Una consulta en la cláusula from es adecuada para crear tablas.
Select * from (select * from (select * from (select * from q1, q2 where q1.x = q2.x) t1, q3 where t1.x = q3.x) t2, q4 where t2.x = q4.x ) t3, q5 donde t3.x = q5.x
Seleccionar declaraciones y subconsultas no devuelven columnas con puntos.
Entonces q1.q11.CustomerID no tiene sentido.
Un SQL JOIN calcula una unión cruzada. Ese valor primero tiene una columna por columna de la tabla izquierda, con los nombres de las columnas de la tabla izquierda; entonces ese valor tiene una columna por columna de la tabla derecha, con los nombres de las columnas de la tabla derecha. Las columnas están identificadas por nombres de columna con puntos, también conocidos como referencias de columna, pero sus nombres no tienen puntos. A SELECT *
devuelve todas esas columnas, por lo que devuelve nombres duplicados cuando las tablas de entrada comparten nombres. Pero no puntos en los nombres.
Nuevas preguntas
sql
El lenguaje de consulta estructurado (SQL) es un lenguaje para consultar bases de datos. Las preguntas deben incluir ejemplos de código, estructura de tabla, datos de muestra y una etiqueta para la implementación de DBMS (por ejemplo, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, etc.) que se utiliza. Si su pregunta se relaciona únicamente con un DBMS específico (usa extensiones / características específicas), use la etiqueta de ese DBMS en su lugar. Las respuestas a las preguntas etiquetadas con SQL deben usar SQL estándar ISO / IEC.