Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-09-2007
sandiamo sandiamo is offline
Miembro
 
Registrado: mar 2007
Posts: 22
Poder: 0
sandiamo Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 28-09-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
JOIN quizas?

select * from tabla1 T1
join tabla2 T2
on T1.id=T2.id
where
T1.campo>=10
Responder Con Cita
  #3  
Antiguo 28-09-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
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:

Código SQL [-]
select Area, Empleado, Sueldo from Tabla1

UNION

select Area, Empleado, Sueldo from Tabla2

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 .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 28-09-2007 a las 15:52:23.
Responder Con Cita
  #4  
Antiguo 28-09-2007
sandiamo sandiamo is offline
Miembro
 
Registrado: mar 2007
Posts: 22
Poder: 0
sandiamo Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 28-09-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por sandiamo Ver Mensaje
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
A ver, lo que ahora te entiendo es que puedas hacer una union como con el UNION, pero que solo te muestre los que estan repetidos, si es asi, puedes hacer lo siguiente, usando FireBird 2.0:

Código SQL [-]
select count(*), tipo, codigo from (


select tipo, codigo from tabla_prueba
group by tipo, codigo

union all

select tipo, codigo from tabla_prueba
group by tipo, codigo)


group by tipo, codigo
having count(*) > 1

Adapta ese ejemplo a tu necesidad y nos cuentas como te va .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #6  
Antiguo 28-09-2007
sandiamo sandiamo is offline
Miembro
 
Registrado: mar 2007
Posts: 22
Poder: 0
sandiamo Va por buen camino
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:

Código SQL [-]
 
SELECT DISTINCT T1.CODIGO, T1.MARCA, T1.MODELO
FROM TABLA1 T1, TABLA2 T2
WHERE (T1.CAMPO4<>'T')AND(T1.CAMPO5<>'T')AND(T1.CODIGO=T2.CODARTICULO)AND((T2.CAMPO2<>'T')OR(T2.CAMPO2 IS NULL))
UNION
SELECT DISTINCT T1.CODIGO, T1.MARCA, T1.MODELO
FROM TABLA1 T1, TABLA3 T3
WHERE (T1.CAMPO4<>'T')AND(T1.CAMPO5<>'T')AND(T1.CODIGO=T3.CODARTICULO)

Saludos y Gracias por vuestro tiempo
Responder Con Cita
  #7  
Antiguo 01-10-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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.)
Código SQL [-]
SELECT T1.CODIGO, T1.MARCA, T1.MODELO
FROM TABLA1 T1 
JOIN TABLA2 T2
ON (T1.CODIGO=T2.CODARTICULO)
WHERE (T1.CAMPO4<>'T')AND(T1.CAMPO5<>'T')AND((T2.CAMPO2<>'T')OR(T2.CAMPO2 IS NULL))
UNION
SELECT T1.CODIGO, T1.MARCA, T1.MODELO
FROM TABLA1 T1 
JOIN TABLA3 T3
ON (T1.CODIGO=T3.CODARTICULO)
WHERE (T1.CAMPO4<>'T')AND(T1.CAMPO5<>'T')
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Firebird 1.5.3 Error:No puede ejecutarse Firebird Guardian xq ya hay una instancia Delphius Firebird e Interbase 5 26-01-2007 10:19:20
alguien ha utilizado Firebird DDX provider? (conectarse con db en firebird!) JuanErasmo .NET 1 04-11-2006 16:17:12
funcion de conjuntos,interseccion, union... sakuragi Varios 13 09-09-2005 23:01:52
Calculadora de conjuntos, interseccion,union..etc..javasript sakuragi HTML, Javascript y otros 4 07-09-2005 05:59:04
Problemas Firebird Super Server 1.5 con RFunc Firebird v 1.0 Prophoenix Firebird e Interbase 1 09-03-2004 11:40:48


La franja horaria es GMT +2. Ahora son las 11:50:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi