Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Últimas tres fechas de un registro con la misma latitud y longitud (https://www.clubdelphi.com/foros/showthread.php?t=48277)

mcalmanovici 20-09-2007 15:19:48

Últimas tres fechas de un registro con la misma latitud y longitud
 
Hola gente:
tengo un gran problema para realizar una consulta en mysql......
Les comento:
en una tabla tengo los siguientes campos:
Barco, fecha, longitud, latitud.
Cada barco puede tener n fechas en la tabla.
Lo que estoy queriendo hacer es encontrar si de las tres últimas fechas que reporto un barco tiene la misma longitud y latitud. Es decir si el barco en las tres últimas fechas de reporte dio la misma latitud y longitud.
pense en hacer algo como:

select barco, fecha, longitud, latitud
from tabla_reporte_barco
group by barco

pero no sé como seguir para traerme las últimas tres fechas reportadas del barco y ver si tienen la misma longitud y latitud.

Si alguien me puede ayudar estaría muy agradecido ya que me estoy volviendo loco con esta consulta.

Muchas gracias.
Mariano.

jhonny 20-09-2007 15:34:45

Antes debo decirte que no soy el experto con MySQL, pero prueba con la siguiente consulta y nos cuentas como te va:

Código SQL [-]
select barco, fecha, longitud, latitud
from tabla_reporte_barco
order by fecha DESC
LIMIT 1, 3

mcalmanovici 20-09-2007 15:48:03

No me sirve mucho
 
Gracias Jhony por contestar pero en realidad esa consulta me esta trayendo solo los primeros tres registros de la tabla...
Yo lo que necesito es saber por cada uno de los barcos si en las últimas tres fechas en las cuales reporto (o sea grabo en la tabla) lo hizo en la misma latitud y longitud....
Alguno más tiene idea de como puedo hacer o a vos mismo se te ocurre otra cosa...

Muchas gracias.
Mariano.

jhonny 20-09-2007 15:50:33

Ahhh, Bueno, pues cambiamos el ordenamiento, asi:

Código SQL [-]
select barco, fecha, longitud, latitud
from tabla_reporte_barco
order by fecha ASC
LIMIT 1, 3

Espero que te sirva :).

quimeras 20-09-2007 15:59:32

En Interbase/Firebird creo que sería esto:

Código SQL [-]
select barco, fecha, longitud, latitud, count(*)
from tabla_reporte_barco
group by barco, fecha, longitud, latitud
having count(*) > 2



Desconozco si funcionará en MySql


PD: Por cierto mi hobby es hacer barquitos de madera ;)

jhonny 20-09-2007 16:03:44

En FireBird 1.5 y 2.0.1, tambien me funcionaria asi:

Código SQL [-]
select First 3 barco, fecha, longitud, latitud, fecha
from tabla_reporte_barco
order by fecha

;)

mcalmanovici 20-09-2007 16:17:15

a ver a ver...
eso me esta ordenando ascendentemente o descendentemente y me esta trayendo solo los últimos tres registros!!!... y yo creo que sino me expresé mal no quiero eso...
Sino que lo que quiero es que me traiga "todos los barcos" que tengan latitud y longitud iguales en los últimos tres reportes......
Te pongo un ejemplo:
Barco fecha latitud longitud
Barco1 22/08/2007 1 1
Barco1 21/08/2007 1 1
Barco1 20/08/2007 1 1
Barco2 20/09/2007 2 1
Barco2 21/09/2007 3 2
Barco3 22/09/2007 2 2
Barco3 23/09/2007 2 2
Barco3 24/09/2007 2 2

Por lo cual lo que me interesa que me traiga es el Barco1 y el Barco3 ya que estos en las últimas tres fechas reportaron la misma latitud y longitud. El Barco2 no me interesa ya que no tiene la misma latitud y longitud las últimas tres fechas..
No sé si pude aclarar un poco lo que quiero.

Gracias y perdon por las molestias.
Saludos.
Mariano.

jhonny 20-09-2007 16:28:19

Ahh, entiendo, desafortunadamente no se me ocurre nada por el momento :(, habra que esperar a que otro compañero se le ocurra alguna cosa.

enecumene 20-09-2007 17:00:58

Saludos, no hay que poner una condicion where? porque creo es la unica forma(segun yo:p), por ejemplo:

Código SQL [-]
select barco, fecha, longitud, latitud, fecha
from tabla_reporte_barco where longitud='condicion' and latitud='condicion'
group by barco, fecha, longitud, latitud order by fecha asc

o tambien puedes intentar este:

Código SQL [-]
select first 3 barco, fecha, longitud, latitud, fecha
from tabla_reporte_barco where longitud='condicion' and latitud='condicion'
group by barco, fecha, longitud, latitud order by fecha asc

espero te sirva.

Saludos.


La franja horaria es GMT +2. Ahora son las 19:34:50.

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