Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Obtener ultimo campo de un mismo ID

Estas en el tema de Obtener ultimo campo de un mismo ID en el foro de Mysql en Foros del Web. Hola mi duda es la siguiente quisiera obtener el campo idVideo de cada lista o el primero, como deberia de hacerlo? idList idVideo 1 asdasd ...
  #1 (permalink)  
Antiguo 29/12/2013, 19:39
 
Fecha de Ingreso: agosto-2010
Mensajes: 37
Antigüedad: 13 años, 8 meses
Puntos: 0
Obtener ultimo campo de un mismo ID

Hola mi duda es la siguiente quisiera obtener el campo idVideo de cada lista o el primero, como deberia de hacerlo?

idList idVideo
1 asdasd
1 asdasd
1 asdasd
2 asdasd
2 asdasd
2 asdasd
3 asdasd
3 asdasd
4 asdasd
4 asdasd

Quiero obtener el primer idVideo de idList1 y asi para cada idList ...

Alguna idea? Puede hacerse algo con el lst_insert_id, he visto que esto solo sirve para el ultimo id de una tabla ... y que funciona aveces ya que si cierras la coneccion peta, gracias por la ayuda ...
  #2 (permalink)  
Antiguo 29/12/2013, 19:41
 
Fecha de Ingreso: agosto-2010
Mensajes: 37
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Obtener ultimo campo de un mismo ID

Cita:
Iniciado por siamatnekerm Ver Mensaje
Hola mi duda es la siguiente quisiera obtener el ultimo campo idVideo de cada lista o el primero, como deberia de hacerlo?

idList idVideo
1 asdasd
1 asdasd
1 asdasd
2 asdasd
2 asdasd
2 asdasd
3 asdasd
3 asdasd
4 asdasd
4 asdasd

Quiero obtener el primer idVideo de idList1 y asi para cada idList ...

Alguna idea? Puede hacerse algo con el lst_insert_id, he visto que esto solo sirve para el ultimo id de una tabla ... y que funciona aveces ya que si cierras la coneccion peta, gracias por la ayuda ...
Código MySQL:
Ver original
  1. SELECT * FROM videoList WHERE idVideo = LAST_INSERT_ID DESC LIMIT 8

Última edición por gnzsoloyo; 29/12/2013 a las 19:44 Razón: Código de programación no permitido en Foros de Bases de DAtos.
  #3 (permalink)  
Antiguo 29/12/2013, 19:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Obtener ultimo campo de un mismo ID

En el ejemplo que das:
Cita:
idList idVideo
1 asdasd
1 asdasd
1 asdasd
2 asdasd
2 asdasd
2 asdasd
3 asdasd
3 asdasd
4 asdasd
4 asdasd
es imposible, con esos datos, obtener el último registro, ya que no tienes ningún campo que sea discriminante de orden. El par de valores (4, 'asdasd') se repite dos veces, por lo que buscar el mayor de todos devolverá dos registros, no uno.
A menos que haya algún campo que no nos estés diciendo, que determine el orden de entrada, no hay modo.
Por otro lado, se nota que no estás comprendiendo el uso de LAST_INSERT_ID(). Esta función devuelve el último ID para un campo autoincremental, siempre que se la invoque inmediatamente después del INSERT correspondiente. No importa que cierres o no la conexión, con sólo que hagas un SELECT previo a usar esa función, el valor devolverá cero (0), porque se pierde la relación de la tabla donde se insertó ese AI.

PD: Lee las normas del foro. No se permite código de programación esn este. Para eso están los foros de los diferentes lenguajes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 30/12/2013, 07:15
 
Fecha de Ingreso: agosto-2010
Mensajes: 37
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Obtener ultimo campo de un mismo ID

Siento mucho lo del codigo de programacion y por no detallar mas, aveces me explico algo mal ...

Dejo aqui el UML de mi BD:



Habia pensado en este select:
Código MySQL:
Ver original
  1. SELECT l.title vl.idVideo COUNT(vl.idVideo) AS NºVIDEOS
  2. FROM l.lista, vl.videoList
  3. WHERE l.idList = (SELECT idList FROM videoList GROUP BY idList) DESC LIMIT 8;

La idea es obtener las ultimas 8 listas creadas con su cantidad de videos es decir un array con las 8 listas, cada lista necesito tener idVideo, title y Nº de videos.

Nombre: Lista Uno
Videos: 28
ID Ultimo Video: adasSDAas

Supongo que el ID del ultimo video seria haciendole un MAX al idVideoList

Pero es un select algo complicado por lo que pido ayuda, un saludo y muchas gracias

Última edición por gnzsoloyo; 30/12/2013 a las 07:53
  #5 (permalink)  
Antiguo 30/12/2013, 08:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Obtener ultimo campo de un mismo ID

Un poquitín complicado, pero estás cerca:

Código MySQL:
Ver original
  1. SELECT l.title vl.idVideo, COUNT(*) NroVideos
  2. FROM l.lista INNER JOIN vl.videoList  ON l.idList  = vl.idList
  3. WHERE l.idList IN (SELECT idList FROM videoList GROUP BY l.idList ORDER BY l.idList DESC LIMIT 8)
  4. ORDER BY l.videoList;
El DER que nos muestras (no, no es UML, es un DER, que también aplica a análisis estructurado) no es ni suficiente ni correcto para pasar a modelo físico (tablas), tiene campos innecesarios en la tabla relacional, y además no se ve si hay una debida normalización.
En cualquier caso, es un comienzo. Lo que te advierto es que el modelado de tablas está un poco alejado del UML y el diagrama de clases no sirve para ello. Son formas de análisis diferentes.
Muchas cosas que hay en el modelo de clases no tienen su correspondencia en el modelo de tablas, y muchas cosas del modelo de tablas no existen para el modelo de clases.
Este es terreno cenagoso, te puede confundir con facilidad.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 30/12/2013, 08:46
 
Fecha de Ingreso: agosto-2010
Mensajes: 37
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Obtener ultimo campo de un mismo ID

Perdon no es UML, es una modelo Entidad Relacion o DER, respecto a los campos que dices que no sirven los necesito en un futuro ... y por el tema de la normalizacion a que te refieres? como seria la forma correcta, a mi en clase me lo enseñaron asi ...

He retocado un poco lo que me pasaste y me hace el select con los datos que necesito pero solo me tira el de 1 y necesito 8

Código SQL:
Ver original
  1. SELECT l.title, vl.idVideo, COUNT(*) NroVideos FROM list l INNER JOIN videoList vl ON l.idList = vl.idList
  2. WHERE l.idList = (SELECT idList FROM videoList GROUP BY l.idList ORDER BY l.idList DESC LIMIT 8) ORDER BY l.idList;

RESULTADO:Lista Dos, 78wL4FmhuRc, 6

pd: tengo agregado 6 videos para 10 listas distintas

Última edición por siamatnekerm; 30/12/2013 a las 10:38
  #7 (permalink)  
Antiguo 30/12/2013, 11:43
 
Fecha de Ingreso: agosto-2010
Mensajes: 37
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Obtener ultimo campo de un mismo ID

Siiii creo que he podido mira al final lo hice asi:

Código SQL:
Ver original
  1. SELECT l.title, vl.idVideo, COUNT(*) NROVIDEOS FROM list l INNER JOIN videoList vl ON l.idList = vl.idList GROUP BY l.title ORDER BY vl.idVideoList DESC LIMIT 8;

Me devuelve lo que necesito muchas gracias Gonzalo!

Etiquetas: campo, tabla, ultimo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:18.