Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Intersect en SQL Server (https://www.clubdelphi.com/foros/showthread.php?t=47667)

federiconqn21 04-09-2007 17:48:58

Intersect en SQL Server
 
hola a todos!!.tengo el siguiente problema.
cuando ejecuto una consulta que contiene "INTERSECT" me aparece un error que no me la deja ejecutar.
la consulta es algo asi


Código SQL [-]
SELECT id_tramite FROM proveedores WHERE id_cuit=3020102025 intersect
SELECT id_tramite FROM solicitudes WHERE numero_Solic=2

el error que me aparece es este:

Servidor: mensaje 156, nivel 15, estado 1, línea 3
Sintaxis incorrecta cerca de la palabra clave 'intersect'.



estoy utilizando sqlserver 7
alguien me podria orientar un poco?
desde ya muchas gracias y cuidense
Bye

Paoti 04-09-2007 18:11:44

Hola FEde....

leyendo en google,

encontre esto:

Microsoft introduced a new operator, INTERSECT, in SQL Server 2005.

por lo tanto no creo que exista el sql server 7


pero peude atacarlo de esta forma

usando tus tablas


Código SQL [-]
SELECT P.id_tramite FROM proveedores P WHERE P.id_cuit=3020102025 AND
P.id_tramite NOT IN 
SELECT S.id_tramite FROM solicitudes  S WHERE S.numero_Solic=2

espero te sirva...


busca en los libros en pantalla..

la clausula IN o EXISTS

saludos

sinalocarlos 05-09-2007 03:25:37

El problema con el NOT IN SELECT es que obligas al SQL a barrer el resultado de la segunda consulta, si entendi bien no quedaria bien algo asi como:

Código SQL [-]
select P.id_tramite from proveedores P left outer join solicitudes S on 
P.id_tramite = S.id_tramite and P.id_cuit=3020102025 and S.numero_Solic=2
where S.id_tramiteIS NULL

era eso?

Paoti 05-09-2007 07:37:05

hola sina


tu sentencia lo que hace es traer el conjunto de todos los registros uniendo con el conjunto de registor de la segunda tabla, pero, trayendo todos del primero independiente de si existenn datos de la segunda tabla


y lo que busca el compañero


es traer el conjunto de datos si y solo si esten en los dos conjuntos de datos.



saludos

jake 07-09-2007 19:17:26

Cita:

Empezado por Paoti (Mensaje 228452)
hola sina


tu sentencia lo que hace es traer el conjunto de todos los registros uniendo con el conjunto de registor de la segunda tabla, pero, trayendo todos del primero independiente de si existenn datos de la segunda tabla


y lo que busca el compañero


es traer el conjunto de datos si y solo si esten en los dos conjuntos de datos.



saludos

bueno según lo que entiendo quieres insertar datos si determinados datos entán en 2 tablas bueno tal vez este procedimiento pueda servir

Código SQL [-]
create proc estaono
as
begin
declare @existendatostabla1 char(2)
declare @existendatostabla2 char(2)

if exists (select * from [tabla1] /*where 'condiciones que dicen si tiene o no los datos que te interesan'*/)
begin
set @existendatostabla1='si'
end

if exists (select * from [tabla2] /*where 'condiciones que dicen si tiene o no los datos que te interesan'*/)
begin
set @existendatostabla2='si'
end 

if (@existendatostabla2='si') and (@existendatostabla1='si')

print 'está en las dos'

/*eso del print fue para probar si existian o no  los datos , aqui puedes hacer lo que quieras ya que comprobaste que el dato está en ambas tablas*/



end
saludos


La franja horaria es GMT +2. Ahora son las 23:04:15.

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