PDA

Ver la Versión Completa : obtener el primer registro de una consulta + el ultimo de otra


Gaim2205
16-06-2008, 18:27:21
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):


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


Y quisiera unirla con esta otra:

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í:


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:

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:

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:




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:


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.