Pregunta

Me gustaría saber cómo esta consulta se escribiría si no se ensambla fue utilizado. He estado tratando de averiguar por casos en los que une no son viables o no se puede utilizar (no están disponibles).

SELECT
    *
FROM
(
    table1
INNER JOIN
    table2
ON
    table1.id = table2.id
)
INNER JOIN
    table3
ON
(
    table1.id2 = table3.id2
)
AND
(
    table1.id3 = table3.id3
)
WHERE
    table1.id = 1

La razón por la que no puedo usar combinaciones se debe a que la aplicación utiliza HQL en comparación con el estándar SQL y HQL hace que se une muy difícil de hacer.

¿Fue útil?

Solución

Es imposible extraer datos de dos tablas diferentes sin unirse a ellos de una manera u otra. Está utilizando una declaración entrar, pero se puede lograr lo mismo mediante la colocación en la cláusula donde, por ejemplo:

SELECT * FROM table1, table2 WHERE table1.id = table2.id AND ...

Otros consejos

Usted puede hacer que selecciona separan y hacer las uniones dentro de la aplicación.

Si se une están fuera de los límites, a continuación, se mantenga alejado de bases de datos SQL.

a menudo una subconsulta puede ser más fácil que una unión aunque sólo seleccionar el valor 1

SELECT e.Name, e.HireDate, (select SUM(CheckAmount) from EmployeeCheck where EmployeeID = e.ID) 
FROM Employee e

No es por ser un pureist pero el concepto básico de bases de datos relacionales y de la normalización de datos es la combinación. Hay pocas razones para utilizar una base de datos relacional para almacenar datos con un vistazo a este. Índices que esto suceda de forma rápida y eficiente.

La forma más antigua era utilizar una tabla maestra y transacción. De vuelta en la Edad Media.

Sin embargo, se puede utilizar un cursor para hacer el filtrado que una unión lo haría. Un cursor funciona como una matriz sobre la mesa en lugar de hacer un filtro basado unirse y le dará el mismo resultado.

Puede hacerlo con subconsultas correlacionadas si quieres, pero las combinaciones estén mejor.

Hibernate no le impide hacer une si tiene una asociación de mapas en el archivo de mapa de hibernación. Véase, por ejemplo: http://www.jumpingbean.co.za/blogs/mark / hibernate_hql_inner_join_on_clause

SQL sin juntas ...

SELECT * FROM table1
SELECT * FROM table2
SELECT * FROM table3

Eso no va a ayudar a usted sin embargo.

La pregunta es, ¿cuál es su salida deseada, y qué razones tiene para no querer unirse a un?

Si desea que los datos de varias tablas en una base de datos relacional, entonces se unirá a los datos. Tal vez esto es algo que hay que hacer en la aplicación como se sugiere James Negro.

Si usted podría arrojar más luz sobre la situación, aunque es posible que podamos para ayudar aún más.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top