Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-04-2010
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Question Resultado con exists dudoso

Buenos dias, tengo el siguiente escenario:

Código:
Tabla Vendedores:
 
NOMBRE VENDEDOR
juan 
pedro
jose
andres
jaime
 
Tabla de Ventas
 
VENDEDOR/FECHA
juan/12/12/2009
pedro/01/12/2009
andres/02/12/2009
El resultado que se quiere obtener es: el nombre de los vendedores que no tuvieron ventas en el mes 12, es decir la consulta arrojaria los nombres de jaime y jose. De antemano muchas gracias por su atencion.
Responder Con Cita
  #2  
Antiguo 07-04-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código SQL [-]
Select V.Nombre
From Vendedores V
full outer join Ventas T on V.Nombre = T.Nombre
where T.Nombre is null
__________________

Responder Con Cita
  #3  
Antiguo 07-04-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola sierraja, puedes hacerlo con Left Join, no dices la BD que usas.

Código SQL [-]
Select V.* From Vendedor V
Left Join (Select Codigo_Vendedor 
           From Ventas 
           Where Extract(Month From Fecha)='12') Vtas On (V.Codigo=Vtas.Codigo_Vendedor)
Where Vtas.Codigo_Vendedor is null
 
//Extract es de Firebird

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 07-04-2010
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Gracias por tu atencion. Necesito hacer una correcion sobre la tabla de ventas

Código:
Tabla de Ventas
 
VENDEDOR/FECHA
juan/12/12/2009
pedro/01/12/2009
andres/02/12/2009
juan/12/11/2009
pedro/01/11/2009
andres/02/11/2009
jaime/01/11/2009
jose/01/11/2009
Responder Con Cita
  #5  
Antiguo 07-04-2010
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Red face

Es correcto, estoy utilizando firebird. Gracias por tu atencion
Responder Con Cita
  #6  
Antiguo 07-04-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por sierraja Ver Mensaje
Gracias por tu atencion. Necesito hacer una correcion sobre la tabla de ventas
Hola de nuevo, ¿has hecho la prueba de la consulta que puse?, debería funcionarte aún con la corrección de la tabla que pusiste.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #7  
Antiguo 07-04-2010
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Es correcto, hice la prueba que me indicaste, pero se me queda colgada la maquina
Responder Con Cita
  #8  
Antiguo 07-04-2010
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Hola, tenia un error en la sintaxis. Pero ahora tengo otro error y lo genera en el segundo select, es decir despues del join left y me dice que hay error sistaxis.
Responder Con Cita
  #9  
Antiguo 07-04-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por sierraja Ver Mensaje
Hola, tenia un error en la sintaxis. Pero ahora tengo otro error y lo genera en el segundo select, es decir despues del join left y me dice que hay error sistaxis.
Hola de nuevo, puedes pegar aquí la consulta que estas ejecutando con los campos que supongo has reemplazado.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #10  
Antiguo 07-04-2010
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Ok Gracias. La consulta es:


Código SQL [-]select *
from direccion_operacional d
left join (select codigo_suscriptor
from facturacion f
where Extract(Month From Fecha)='12') f on (d.codigo_do=f.codigo_suscriptor)
where f.codigo_suscriptor is null;
Responder Con Cita
  #11  
Antiguo 07-04-2010
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Perdon por el error:

Código SQL [-]
 
select *
from direccion_operacional d
left join (select codigo_suscriptor
           from facturacion f
           where Extract(Month From Fecha)='12') f on (d.codigo_do=f.codigo_suscriptor)
where f.codigo_suscriptor is null;

Disculpa
Responder Con Cita
  #12  
Antiguo 07-04-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, lo unico que veo es que le estas asignando el mismo alias tanto para el select interior como para el resultado que da ese select, has la prueba quitando el alias que has puesto en el select interior, también puedes probar ejecutando solo la segunda consulta, para saber si ahí esta el problema.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #13  
Antiguo 07-04-2010
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
He intentado la consulta interior y genera un error en el alias despues del where es decir


Código SQL [-]
 
select codigo_suscriptor
           from facturacion f
           where Extract(Month From Fecha)='12') f on (d.codigo_do=f.codigo_suscriptor);
Responder Con Cita
  #14  
Antiguo 07-04-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo, la consulta interior es solo esta:

Código SQL [-]
select codigo_suscriptor
from facturacion
where Extract(Month From Fecha)='12'

también te decía que pruebes quitando el alias de la consulta interior, pero no debería dar problemas, así como esta porque es solo una tabla.

Código SQL [-]
select *
from direccion_operacional d
left join (select codigo_suscriptor
           from facturacion
           where Extract(Month From Fecha)='12') f on (d.codigo_do=f.codigo_suscriptor)
where f.codigo_suscriptor is null;

Acabo de hacer la prueba, aplicando a mis tablas y la consulta que te puse si funciona.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #15  
Antiguo 07-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

A mí me parece mas fácil hacerlo de ésta manera:
Código SQL [-]
Select V.Nombre
From Vendedores V
LEFT OUTER JOIN Ventas T 
ON V.Nombre=T.Vendedor
WHERE T.Vendedor is null 
and Extract(Month from T.Fecha)=12
.
Recomendación:

Algo muy importante para poder hacer estos tipos de consulta es conocer los diferentes JOIN y poder utilizarlo en diferentes consultas, para lo cual recomiendo leer muy atentamente ésta página(o tambien ésta) que nos va llevar a entender muy bien estos tipos de consulta y nos va fascilitar la vida..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 07-04-2010 a las 22:39:03.
Responder Con Cita
Respuesta



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
Exists or not Exists that is the question MaMu SQL 7 05-04-2009 18:29:55
Problema serios con predicados IN, NOT IN, EXISTS, ... mlara Firebird e Interbase 7 15-05-2008 19:43:41
Transaccion con if y con exists zvf SQL 4 18-09-2007 18:52:44
Error en el Exists Payola2011 MySQL 7 31-01-2006 19:17:47
-502 Declared cursor already exists Carlitos Firebird e Interbase 4 30-09-2003 17:18:22


La franja horaria es GMT +2. Ahora son las 22:51:39.


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