Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-02-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
consulta del numero mayor de subregistro

Hola, pues aqui dando molestias espero que me puedan a yudar una vez mas

estoy trabajando con Delphi 6, MS SQL Server, por dedio de ADO por supuesto.

tengo una tabla llamada cotizaciones, que entre otros campos tiene cotizacion y subcotizacion. Lo que quiero es obtener la subcotizacion mas reciente de una cotizacion por ejemplo:

Cot---sub
1------1
1------2
1------3
2------1
2------2
3------1
3------2
4------1
5------1
5------2

lo que espero obtener es:

cont---sub
1------3
2------2
3------2
4------1
5------2

me imagino algo como:
'select max(sub)from cotizaciones'
pero me falta el que sea por cada una de las cotizaciones.

Gracias por su ayuda

saluods a todos

Última edición por Yun-i fecha: 28-02-2008 a las 18:40:35.
Responder Con Cita
  #2  
Antiguo 28-02-2008
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 lo he probado, pero sería algo así ....

Código SQL [-]
Select Distinct Co1.Cot,
(Select Max(Co2.Sub) from Cotizaciones Co2
 where Co1.Cot = Co2.Cot)
from Cotizaciones Co1

__________________
Piensa siempre en positivo !
Responder Con Cita
  #3  
Antiguo 28-02-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
¿No sería más adecuado un agrupamiento?

Código SQL [-]
select cot, max(sub)
from cotizaciones
group by cot

Bye
Responder Con Cita
  #4  
Antiguo 28-02-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Talking

Gracias GluGlu eres muy amable si galo como lo comente

no lo he corrido en delphi pero en el analizador de consultas de sql server si galo pero mi pregunta es que es co1 y co2?? solo para entender como lo hace gracias otra vez
Responder Con Cita
  #5  
Antiguo 28-02-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Talking

Cita:
Empezado por keyboy Ver Mensaje
¿No sería más adecuado un agrupamiento?


Código SQL [-]
select cot, max(sub)
from cotizaciones
group by cot





Bye
graciass esta solocion es tambien correcta jejejej muchas gracias por su apoyo
Responder Con Cita
  #6  
Antiguo 28-02-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
¿galo?

¿Qué es galo?

Bye
Responder Con Cita
  #7  
Antiguo 28-02-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Cita:
Empezado por keyboy Ver Mensaje
¿galo?

¿Qué es galo?

Bye
jejeje perdon es jalo osea si que si corrio pero en el analizador de consultas de sql server.

En Delphi manda un error que dice:

"el prefijo de la comlumna Co1 no coincide con un nombre de tabla o con un alias usado en la consulta "
Responder Con Cita
  #8  
Antiguo 28-02-2008
Avatar de rulo_m
rulo_m rulo_m is offline
Miembro
 
Registrado: dic 2007
Posts: 70
Poder: 17
rulo_m Va por buen camino
me imagino que es jalo.. funciono, andubo pues..

lo de co1 y co2 son nombres con el cual hace referencia a una tabla en este caso ambas hacen referencia a cot pero al hacer el join de dos tablas que resultan ser la misma pues hay que llamarse de algun modo diferente
Responder Con Cita
  #9  
Antiguo 28-02-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por keyboy Ver Mensaje
¿galo?

¿Qué es galo?

Bye
Creo que lo que quiso decir el amigo es jalo... del verbo jalar

Para Yun-i, co1 y co2 son "alias" de la tabla Cotizaciones. Recomiendo la lectura de un manual o libro que trate sobre SQL.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #10  
Antiguo 28-02-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Cita:
Empezado por rulo_m Ver Mensaje
lo de co1 y co2 son nombres con el cual hace referencia a una tabla en este caso ambas hacen referencia a cot pero al hacer el join de dos tablas que resultan ser la misma pues hay que llamarse de algun modo diferente

y como podria yamarlas diferente??
podeis ayudarme?
Responder Con Cita
  #11  
Antiguo 28-02-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Yun-i Ver Mensaje
y como podria yamarlas diferente??
podeis ayudarme?
Como he dicho justo antes de ti... esos nombres son "alias", son ficticios... es una manera de llamar a tu tabla.
Para realizar ese tipo de consulta se requiere diferenciar a un select del otro que apuntan a una misma tabla... op2 mantiene la sumas, pero op1 es quien las "agrupa".

Espero que se entienda.
como he dicho antes, un manual de SQL puede esclarecerte algunas cosas.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #12  
Antiguo 28-02-2008
Avatar de rulo_m
rulo_m rulo_m is offline
Miembro
 
Registrado: dic 2007
Posts: 70
Poder: 17
rulo_m Va por buen camino
Cita:
Empezado por gluglu Ver Mensaje
No lo he probado, pero sería algo así ....

Código SQL [-]
Select Distinct Co1.Cot,
(Select Max(Co2.Sub) from Cotizaciones Co2
 where Co1.Cot = Co2.Cot)
from Cotizaciones Co1

Lo que hace aqui compañero es comparar los datos de 2 tablas
Código SQL [-]
where Co1.Cot = Co2.Cot
pero las dos tablas resultan ser la tabla cotizaciones entonces a cada una se le asigna un "alias" Cotizaciones Co2 y cotizaciones Co1 para saber a cual de las 2 tablas hacemos referencia en cada dato.. el dato cot viene de la pirmera tabla y el dato max(sub)viene de la segunda tabla.. a ver si me explique bien..
Responder Con Cita
  #13  
Antiguo 28-02-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Cita:
Alias

En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto, otras veces por simple capricho o por otras circunstancias. Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto) se llame Empleado. En este caso procederíamos de la siguiente forma: SELECT DISTINCTROW Apellido AS Empleado FROM Empleados;
algo asi?? osea debo renombrarlo me faltaba el as?
Responder Con Cita
  #14  
Antiguo 28-02-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Cita:
Empezado por rulo_m Ver Mensaje
.. a ver si me explique bien..
sip si te explicas bien pero el problea es que delphi no reconoce ese 'alias'
y por alguna razon manda el error antes comentado
Responder Con Cita
  #15  
Antiguo 28-02-2008
Avatar de rulo_m
rulo_m rulo_m is offline
Miembro
 
Registrado: dic 2007
Posts: 70
Poder: 17
rulo_m Va por buen camino
Cita:
Empezado por Yun-i Ver Mensaje
algo asi?? osea debo renombrarlo me faltaba el as?
ya intentaste con el cotizaciones AS co1?
Responder Con Cita
  #16  
Antiguo 28-02-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Perdón si me salgo del hilo, pero no es "HALAR"?

Cita:
HALAR
(Del fr. haler).
1. tr. Mar. Tirar de un cabo, de una lona o de un remo en el acto de bogar.
2. tr. And., C. Rica, Cuba, Hond., Nic., Pan. y Ven. Tirar hacia sí de algo.
3. tr. coloq. Cuba. Succionar un líquido a través de una pajilla o de otro conducto.
4. tr. coloq. Cuba. Dicho de una máquina: Consumir combustible o electricidad.
5. tr. coloq. Ven. Arrastrar por la fuerza.
6. intr. coloq. Cuba y Ven. empuñar (‖ asir con la mano). Halar POR el arma. Halar DE un instrumento de labranza.
7. intr. coloq. Cuba. Aspirar el humo del tabaco.
8. intr. Ven. Dicho de un horno o de una chimenea: tirar (‖ producir el tiro o corriente de aire).
9. prnl. Cuba. Dicho de una persona: Desfigurársele la cara por enfermedad o por cansancio.
Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #17  
Antiguo 28-02-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Cita:
Empezado por rulo_m Ver Mensaje
ya intentaste con el cotizaciones AS co1?
Código Delphi [-]
ADOQuery2.SQL.Add('Select Distinct as Co1.NUM_COTIZACION,(Select Max(as Co2.NUM_SUBCOTIZACION) from SIE_COTIZACIONES Co2 where Co1.NUM_COTIZACION =Co2.NUM_COTIZACION)');
ADOQuery1.SQL.Add('from SIE_COTIZACIONES  Co1');

este es el codigo que he metido pero donde poner as no lo se

ahi lo puse y me marca error al ejecutarlo
gracias por su tiempo
Responder Con Cita
  #18  
Antiguo 28-02-2008
Avatar de rulo_m
rulo_m rulo_m is offline
Miembro
 
Registrado: dic 2007
Posts: 70
Poder: 17
rulo_m Va por buen camino
Código SQL [-]
Select Distinct Co1.NUM_COTIZACION,
(Select Max(Co2.NUM_SUBCOTIZACION) 
from SIE_COTIZACIONES AS Co2 where Co1.NUM_COTIZACION =Co2.NUM_COTIZACION)from SIE_COTIZACIONES AS Co1

el AS va despues del from xxxxxx

Última edición por rulo_m fecha: 28-02-2008 a las 20:52:33.
Responder Con Cita
  #19  
Antiguo 28-02-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola, es lo que te decia rulo_m asi:
Código Delphi [-]
ADOQuery2.SQL.Add('Select Distinct as Co1.NUM_COTIZACION,(Select Max(as Co2.NUM_SUBCOTIZACION) from SIE_COTIZACIONES Co2 where Co1.NUM_COTIZACION =Co2.NUM_COTIZACION)');
ADOQuery1.SQL.Add('from SIE_COTIZACIONES as Co1');

Saludos.

Edito: ya rulo_m contestó.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #20  
Antiguo 28-02-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Cita:
Empezado por keyboy Ver Mensaje
¿No sería más adecuado un agrupamiento?


Código SQL [-]
select cot, max(sub)
from cotizaciones
group by cot





Bye
es solo por no quedarme con la duda la verdad esque tenia que hacerlo rapido pero si me gustaria saber bine que onda con eso de los alias pero esta solucion corre en delphi de manera sencilla


gracias de antemano por todo
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
Fecha de mayor a menor alcides Varios 2 15-02-2008 16:46:09
Contar el numero de elementos de una consulta papulo PHP 7 02-10-2006 15:39:42
Limitar el numero de Registro de una Consulta en FireBird 1.5 Abel Garcia Firebird e Interbase 3 08-12-2004 23:57:31
¿Qué quieres ser de mayor? kinobi Humor 16 11-07-2003 13:46:30


La franja horaria es GMT +2. Ahora son las 20:35:28.


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