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 13-01-2012
Salnhack Salnhack is offline
Miembro
NULL
 
Registrado: oct 2011
Ubicación: Cuba
Posts: 71
Poder: 13
Salnhack Va por buen camino
Question Problema con consulta select

Hola a todos

Estoy realizando una consulta SELECT utilizando dos tablas (Servicios, Ventas)
nesesito selecionar los servicios que no se han vendidos vendidos
esto es lo que hago

Código SQL [-]
tabla servicios
id_serv
descserv

tabla ventas
idventa
id_serv
cantserv
impserv
relacionadas por id_serv

mi consulta es
Código Delphi [-]
with DataModule4.Query3 do       
begin        
  Close;        
  SQL.Clear;        
  SQL.Add('select (servicios.descserv) from servicios,ventas where servicios.id_serv<>ventas.id_serv');        
  Open;      
end;

el caso es que me duplica los resultados y me mustra todos los servicios y no los que no han sido vendidos
Espero que me puedad ayudar

Última edición por Casimiro Notevi fecha: 13-01-2012 a las 22:03:54.
Responder Con Cita
  #2  
Antiguo 13-01-2012
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Poder: 17
kapcomx Va por buen camino
no vendidos

como identificas en tu sistema un servicio no vendido, tienes algun campo status que te indique si esta o no vendido....

tal vez si agregaras ese campo seria mas sencillo

solo tendrias que hacer

select * from servicios where status=0 //considerando que los ceros sean los no vendidos....


saludos....
Responder Con Cita
  #3  
Antiguo 13-01-2012
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Prueba con

ummm bueno puedes hacer una consulta
Código SQL [-]
select * from servicios a
where not exists(select * from ventas b
where a.id_serv=b.serv)

creo que con aunque es mejor la opcion que te dice el amigo kapcomx

Última edición por microbiano fecha: 13-01-2012 a las 20:08:07. Razón: complementarlo
Responder Con Cita
  #4  
Antiguo 15-01-2012
oceres oceres is offline
Registrado
 
Registrado: nov 2008
Posts: 3
Poder: 0
oceres Va por buen camino
Thumbs up Otras opciones validas

También puedes hacer:

Código SQL [-]
select * from servicios where id_serv not in(select id_serv from ventas)

Supongo que si un servicio no se ha vendido pues no esta registrado en la tabla ventas, por lo que la consulta que te doy te servirá.
Responder Con Cita
  #5  
Antiguo 16-01-2012
Avatar de jejo1984
jejo1984 jejo1984 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 39
Poder: 0
jejo1984 Va por buen camino
Utiliza exist
Responder Con Cita
  #6  
Antiguo 17-01-2012
papote654 papote654 is offline
Miembro
 
Registrado: nov 2006
Posts: 29
Poder: 0
papote654 Va por buen camino
Cita:
Empezado por jejo1984 Ver Mensaje
Utiliza exist
teniendo en cuenta que al utilizar la funcion EXISTS traera los registros que tengan el id de servicio NULL, esta es la diferencia entre el IN y el EXISTS.

los dos podrian traer el mismo resultado en cambio el EXISTS toma los valores NULL como TRUE.
__________________
Al que no le gusta enseñar, no merece aprender...
Responder Con Cita
  #7  
Antiguo 17-01-2012
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Código SQL [-]
select S.id_serv, S.descserv, V.id_serv form servicios S
left join ventas V on ( S.id_serv= V.id_serv )
where
 V.id_serv = null
Otra forma. Si quieres comprobarlo, quita la condición where y verás todos. Luego pon la condición, y verás que sólo aparecen los que no están en la tabla Ventas.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #8  
Antiguo 17-01-2012
Avatar de jejo1984
jejo1984 jejo1984 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 39
Poder: 0
jejo1984 Va por buen camino
Primero dime el campo idventa toma valores nulos
Prueba esto:
Código SQL [-]
select (servicios.descserv) from servicios,ventas where servicios.id_serv=ventas.id_serv
__________________
No lleves tus conocimiento a la tumba, Enseña a otros lo que sabes...
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
problema con la consulta select count() enecumene PHP 5 01-02-2007 23:33:24
Problema con consulta not in (select ....) VRO Firebird e Interbase 12 03-10-2005 18:54:05
Problema conuna consulta select...not in (select ...) VRO Firebird e Interbase 2 11-08-2005 08:56:35
Consulta con Sub-select !!! isc_hilda SQL 2 21-05-2004 05:22:05
Select (Consulta) WaRRanT MySQL 3 19-02-2004 15:13:58


La franja horaria es GMT +2. Ahora son las 15:53: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