Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   obtener el primer registro de una consulta + el ultimo de otra (https://www.clubdelphi.com/foros/showthread.php?t=57469)

Gaim2205 16-06-2008 18:27:21

obtener el primer registro de una consulta + el ultimo de otra
 
hola amigos, aqui les tengo otra consulta que no puedo resolver esperando que se puedan dar el tiempo en ayudarme. La situación es, tengo la consulta (en access):

Código SQL [-]
SELECT top 1 *
FROM Coleta where matricula = '100423' and data = #27/05/2008#  order by data_hora desc

Y quisiera unirla con esta otra:
Código SQL [-]
SELECT top 1 *
FROM Coleta where matricula = '100423' and data = #28/05/2008#  order by data_hora

Es decir, que la consulta me regrese el ultimo registro de la fecha 27/05 y el primer registro de la fecha 28/05.

Alguna idea? Gracias.

roman 16-06-2008 18:38:53

Quizá así:

Código SQL [-]
SELECT top 1 *
FROM Coleta where matricula = '100423' and data = #27/05/2008#  order by data_hora desc

union

SELECT top 1 *
FROM Coleta where matricula = '100423' and data = #28/05/2008#  order by data_hora

// Saludos

Gaim2205 16-06-2008 18:42:24

que ignorancia la mia.. perdonen... :(:(:(

roman 16-06-2008 18:46:07

Pues no hay nada que perdonar. Siempre hay cosas que no sabemos, no tiene nada de malo.

// Saludos

Gaim2205 16-06-2008 19:04:58

ok. sabia que habia algo mas a todo esto. Agradezco mucho la ayuda pero sigo teniendo el problemita, al hacer las consultas individualmente obtengo los resultados siguientes:
Consulta:
Código SQL [-]
SELECT  Top 1 * FROM Coleta where matricula = '100423' and 
data = #26/05/2008#  order by data_hora asc
Resultado : '26/05/2008 05:51:00 p.m.'

Consulta:
Código SQL [-]
SELECT Top 1 * FROM Coleta where matricula = '100423' and 
data = #27/05/2008#  order by data_hora asc
Resultado : '27/05/2008 03:02:00 a.m'

Estos son los 2 registros que quiero "unidos" pero al hacer la consulta completa con todo y la union los resultados ya no son los mismos, obtengo :
'26/05/2008 05:51:00 p.m.'
'27/05/2008 05:33:00 p.m.'

Sin importar que cambie los criterios de ordenamiento el resultado de la consulta con la union siempre es el mismo, ¿qúe podría estar pasando?. ¿algo asi como "orden de ordenamiento"? :P no se como explicarlo, pero seguro que los mas expertos entienden el problema, Gracias por su atención.

poliburro 16-06-2008 22:33:15

Lo has hecho como te indico román y aún así no te da el resultado deseado?

poliburro 16-06-2008 22:37:11

Esta es un poco más rebuscada:

Código SQL [-]
 
 
       Select Coleta.*
         From Coleta Coleta
    Left Join (
                       SELECT  Max(Data_Hora) As HoraMax, 
                                      Min(Data_Hora)  As HoraMin
                          FROM Coleta 
                           where matricula = '100423' and 
                                     data = #26/05/2008#  
                ) As MaxMin
           On Coleta.DataHora = MaxMin.HoraMax Or
                Coleta.DataHora = MaxMin.DataMin
   Where matricula = '100423' And
            not Coleta.DataHora is null

Gaim2205 16-06-2008 23:13:27

Asi es, con la union como la puso Roman me dan los resultados que especifico en mi post anterior. Intenté esta nueva consulta que me proporcionaste pero me marca el error "la expresión de combinación no está admitida", resaltandome las lineas siguientes:

Coleta.Data_Hora = HoraMax Or
Coleta.Data_Hora = DataMin

:confused:

Alguna idea? Muchas gracias

poliburro 16-06-2008 23:16:58

aver la he corregido, prueba de nuevo

Gaim2205 16-06-2008 23:31:20

Quedó muy bien con pequeños cambios:

Código SQL [-]
Select Coleta.*
         From Coleta Coleta
    Left Join (
                       SELECT  Max(Data_Hora) As HoraMax, 
                                      Min(Data_Hora)  As HoraMin
                          FROM Coleta 
                           where matricula = '100423' and 
                                     data = #26/05/2008#  
                ) As MaxMin
           On Coleta.Data_Hora = MaxMin.HoraMax or 
                Coleta.Data_Hora = MaxMin.HoraMin
   Where matricula = '100423' And
data = #27/05/2008#

Muchas gracias poliburro me has ayudado las ultimas 2 veces que me he atorado. :) Gracias a todos.


La franja horaria es GMT +2. Ahora son las 16:03:59.

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