![]() |
Query:El ultimo dato ingresado Saludos: Tengo una tabla de clientes y otra de servicios donde registro los servicios prestados a determiando cliente (fecha, tipo servicio,persona que atendio, etc). la estructura de la tabla sericios es mas o menos asi: inst(PK) - autoincrement idserv(INDEX) sec idcliente el idserv me muestra el codigo del primer servicio que se hizo a un cliente, para este caso memuestra SEC=1, para un segundo servicio toma el mismo idserv y el SEC=2, para un tercer servicio SEC=3 y asi sucesivamente. Lo que deseo es que para cada caso, me muestre el idinst con el ultimo servicio realizado a cada cliente, osea el max(SEC) , pero no logro obtener esa fila unicamente. Esto es lo que estoy usando: Código PHP: |
gracias rrufo, pero con eso solo sonsigo el ultimo insert a mi tabla, y lo que necesito es el ultimo insert a cada idserv... Alguna otra sugerencia, gracias!! |
Voy a intentar darte alguna idea, en MySQL no se si se podra que llevo apenas unos días trabanjando con ella. En Oracle se podría hacer algo parecido a esto a ver si te sirve o te da alguna idea: Código: SELECT s.idserv, c.nombre, s.sec, s.fecha, s.hora, c.direccion |
problema con version Gracias seanchan! te cuento que en mysql 4.1* (servidor local) la consulta funciona uy bien, :arriba: , pero a la hora de subirla a mi servidor web mysql 4.0* me envia un mensaje de error: Código PHP: Código: SELECT s.idinst, c.nombre, s.sec, s.fecha, s.h_inicio, c.direccionDe verdad te agradezco mucho por la ayuda, llevo desde la tarde dandole vueltas a este tema. |
En la version 4.0 de MySQL no puedes usar subconsultas, no puedes actualizarlo en tu servidor o pedir que te la actualicen? |
Pues de momento lo he pedido, pero no se cuando me lo actualicen, si es que lo hacen. Qué otra solución habria a mi consulta??? con lo que me indico seanchan funciona muy bien, pero esta el problema de la subconsulta. |
miglos, no se que problema tienes... he probado el primer ejemplo que has puesto y funciona perfectamente, saca el maximo "sec" de cada grupo. O no buscas eso? que quieres obtener? |
Hmmm..algo mas o menos asi??? :pensando: $var = array--->"select distinct(idinst) from instalaciones" foreach $var as idinst { select max(sec), etc.. from instalaciones, comercios where idinst=$var echo $row[fecha],nombre, etc.. } |
Asi es OskarL, eso es lo que quiero obtener. Pero no se porqué, me muestra el max(sec) para cada grupo pero me muestra la fecha del sec(1), espero haberme explicado. Por ejemplo: idinst - sec - fecha 1001 - 1 - 05/06/2006 1001 - 2 - 15/06/2006 1001 - 3 - 05/07/2006 1001 - 4 - 10/07/2006 al ejecutar la consulta me bota 1001 - 4 - 05/06/2006 |
se me ocurre ahora....:pensando: Código HTML: SELECT s.idinst, c.nombre, max( s.sec ) , max( s.fecha ) , s.h_inicio, c.direccion |
alguna sugerencia por favor???? o alguna explicacion de porque me muestra el dato asociado al sec(1) ??? quizas esta mal hecha mi tabla? |
No es cosa de tu tabla, yo me he creado una para probar, y me pasa lo mismo (aunque tambien puede ser que hayamos cometido el mismo error al crearla, pero weno, jeje) Le he estado dando vueltas, y creo que la unica solucion en este caso es la subconsulta... |
Si no sacas el campo s.h_inicio prueba con esta a ver: Código: SELECT s.idinst, c.nombre, max( s.sec ) as maxSec, max( s.fecha ) as Fecha , c.direccionOtra opción sería lanzar la subconsulta, leerla en PHP, y en base a los resultados obtenidos montar el WHERE para la segunda Consulta. Cualquiera de estas opciones es un trabajo... |
Saludos! Por motivos de viaje no pude responder inmediatamente y aclarar como quedo solucionado el tema. Con la ultima colaboracion de seanchan, el tema quedo solucionado y todo funciona muy bien, solo me queda esperar la actualizacion de mi base de datos, imagino que en temas de rendimiento, es mejor usar las subconsultas. Muchas gracias nuevamente!!:si: |
| La zona horaria es GMT -6. Ahora son las 20:43. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.