![]() |
Interseccion en Firebird
Cual es el operador de Interseccion en Firebird?. Se que es una cosa simple pero he estado buscando informacion y no he encontrado nada y no me funciona el operador INTERSECT.
Gracias |
JOIN quizas?
select * from tabla1 T1 join tabla2 T2 on T1.id=T2.id where T1.campo>=10 |
Tengo entendido que INTERSECT es la union de dos consultas y al final nos muestra como resultado una unica consulta...
En FireBird, eso se hace con UNION y UNION ALL... ¿Cual es la diferencia?, UNION mostrara los datos agrupados, osea que si un registro de la primera consulta es igual a un registro de la segunda solo mostrara uno, mientras que con UNION ALL mostrara las dos (O mas segun sea el caso). ¿Como se usa?, no se si sera igual en SQL Server y el INTERSECT, pero aca es asi, por ejemplo:
Hay que tener en cuenta que los campos de las dos consultas deben ser del mismo tipo y tamaño, pero si no lo son y los necesitamos, podriamos hacer uso del cast. Espero te sirva ;). |
Hola
La cuestion es que UNION y UNION ALL muestran la union de dos selecciones (sin repetidos y con repetidos) y con INTERSECT yo lo que necesito son exactamente la interseccion o sea los repetidos. Gracias |
Cita:
Adapta ese ejemplo a tu necesidad y nos cuentas como te va ;). |
Hola
Gracias la solucion que alcance es muy parecida a la que me has dado. Yo lo que trataba era mejorar el tiempo de respuesta de la consulta y al final el codigo que puse fue algo asi:
Saludos y Gracias por vuestro tiempo |
Prueba la consulta usando JOIN y sin el DISTINCT.
El UNION ya te devuelve la union de las dos consultas sin repetir los resultados duplicados. El JOIN quizás te haga la consulta más rápida (eficiente, menos lecturas, etc.)
|
La franja horaria es GMT +2. Ahora son las 00:24:07. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi