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 21-07-2006
cuscus cuscus is offline
Miembro
 
Registrado: abr 2005
Posts: 45
Poder: 0
cuscus Va por buen camino
problema sql primeros elementos

tengo un problema con una sql. Imaginemos una tabla con id_cliente e id_factura
yo quiero sacar todas aquellas facturas que cumplan una condicion(hasta ahi perfecto), pero solo aquellas cuyo cliente no tenga una factura posterior, osea q ese cleinte no tenga una id_factura superior, ademas las facturas posteriores no tienen xq cumplir la condicion de las facturas que busco.
Le estoy dando vueltas y vueltas y no consigo hacerlo en una sola sql.
A ver si podeis echarme una mano
Gracias
Responder Con Cita
  #2  
Antiguo 21-07-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
No sé si he entendido bien tu pregunta. A lo mejor la podrías detallar un poco más.

En cualquier caso, si ya tienes la id_factura para la cual quieres imponer la condición de búsqueda, simplemente bastaría con agregarle esa condición adicional al select diciendo que todas aquellas facturas que sean superiores a ese id_factura que tienes, pues no se listen.

Si no es este el caso, deberías pensar a lo mejor en select anidado.

Si detallas un poco más, a lo mejor es más fácil dar con una solución.

Saludos
__________________
Piensa siempre en positivo !
Responder Con Cita
  #3  
Antiguo 21-07-2006
cuscus cuscus is offline
Miembro
 
Registrado: abr 2005
Posts: 45
Poder: 0
cuscus Va por buen camino
no el id_factura no le se xq la select me tiene que devolver varias facturas.Expecifico mas
imaginate que quiero todas las facturas que superen los 100 euros pero de ellas solo aquellas cuyos clientes no tengan otra factura posterior.

No se si este ejemplo es mas especifico
Responder Con Cita
  #4  
Antiguo 21-07-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Sigo sin entender a qué te refieres cuando dices '... cuyos clientes no tengan otra factura posterior'.

Posterior a qué factura ? Qué condición es la que impones ?

Sigo diciendo que pruebes con un Select anidado : algo así como
Código SQL [-]
Select * from TABLA
where id_factura > (Select Max(Id_Factura) from TABLA where Total_Factura > 100)

No sé si esto te sirve de ayuda.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #5  
Antiguo 21-07-2006
cuscus cuscus is offline
Miembro
 
Registrado: abr 2005
Posts: 45
Poder: 0
cuscus Va por buen camino
ante todo gluglu, gracias por echarme una mano, lo de lso clientes que no tengan una factura posterior a ver si me puedo explicar mejor
imaginate q tengo el cliente 1 , el 2 , l 3 y el 4
id_cliente id_factura total
1 1 125
2 2 150
2 3 115
3 4 140

el resultado de la consulta que quiero hacer , me deberia devolver todos menos el segundo registro, el de 150 euros, xq ese cliente tiene una factura posterior, pero si me deberia devolver el registro de 115 , xq auqnue es del mismo cliente, esa factura no tiene otra posterior para ese cliente, no se si asi queda mas claro
Responder Con Cita
  #6  
Antiguo 21-07-2006
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 20
droguerman Va por buen camino
a ver voy a suponer que tu condicion es la fecha si tu gestor soporta consultas anidadas podrias intentar:
Código SQL [-]
select * FROM FACTURA
WHERE fecha>= :fecha AND
idCliente NOT IN (SELECT idCliente FROM FACTURA where fecha<: fecha)

ojala os sirva
__________________
self.free;
Responder Con Cita
  #7  
Antiguo 24-07-2006
cuscus cuscus is offline
Miembro
 
Registrado: abr 2005
Posts: 45
Poder: 0
cuscus Va por buen camino
hola, gracias droguerman.
El problema con el que me encuentro en tu sql es que la fecha de la 2º select no la tengo, no puedo ponerla, ya que seria la fecha la factura resultante de la propia select, no se si me explico. Si estoy buscando facturas apartir del 1 enero que no haya posteriormente mas facturas de ese cliente, la fecha de la 2º sql no seria 1 de enero, seria la fecha de facturacion de la primera factura de ese cliente, no se si se entiende
Responder Con Cita
  #8  
Antiguo 24-07-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Algo así como esto :

Código SQL [-]
Select CL.*,
(Select Max(ID_FACTURA) from CLIENTES CL2 where CL2.ID_CLIENTE = CL.ID_CLIENTE) as MAX_FAC
from CLIENTES CL
where ID_FACTURA = MAX_FAC
__________________
Piensa siempre en positivo !
Responder Con Cita
  #9  
Antiguo 24-07-2006
cuscus cuscus is offline
Miembro
 
Registrado: abr 2005
Posts: 45
Poder: 0
cuscus Va por buen camino
MUCHISIMAS GRACIAS
en realidad no necesitaba el elemento maximo, sino saber si hay alguno posterior, asi que cambiando el max por un count en tu sql me ha valido, te agradezco muchisimo la solucion

un saludo
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
Linux: Mis primeros pasos lafirma Linux 21 19-01-2006 07:38:01
Primeros pasos OOP Kreyser OOP 6 29-09-2005 09:30:40
windows vista y sus primeros virus el_barto Noticias 1 13-09-2005 22:24:49
Primeros pasos Interbase carlosegs Varios 1 03-05-2005 17:01:26
Primeros pasos Beck Oracle 5 20-05-2004 16:34:29


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