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

seleccionar solo primer registro de tabla vinculada

Estas en el tema de seleccionar solo primer registro de tabla vinculada en el foro de Mysql en Foros del Web. Hola a todos: Tengo dos tablas vinculadas por el campo id: la tabla formulario: CREATE TABLE IF NOT EXISTS `formulario` ( `id` int(10) unsigned NOT ...
  #1 (permalink)  
Antiguo 22/04/2010, 04:07
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
seleccionar solo primer registro de tabla vinculada

Hola a todos:

Tengo dos tablas vinculadas por el campo id:

la tabla formulario:

CREATE TABLE IF NOT EXISTS `formulario` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`comic` varchar(100) DEFAULT NULL,
`editorial` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=194 ;

y la tabla fotos:


CREATE TABLE IF NOT EXISTS `fotos` (
`idfoto` int(10) unsigned NOT NULL AUTO_INCREMENT,
`nombrefoto` varchar(100) DEFAULT NULL,
`id` int(10) DEFAULT NULL,
PRIMARY KEY (`idfoto`),
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=419 ;


para cada comic se pueden almacenar mas de una foto.

Si hago:

select * from formulario inner join fotos on formulario.id=fotos.id order by idfoto me salen todos los registros, por ejemplo si para un comic he almacenado tres fotos, me saldrian tres registros.

Lo que yo querria es que me saliese solo la primera foto que he almacenado pero no se me ocurre como hacer la consulta.
Agradecería si alguien me pudiese echar una mano con esto porque no se me ocurre la solucion por el momento

Muchas gracias a todos y que vaya bien
  #2 (permalink)  
Antiguo 22/04/2010, 04:24
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: seleccionar solo primer registro de tabla vinculada

Una pregunta ¿solo quieres recoger 1 solo registro, o quieres que Mysql te devuelva digamos una lista de registros que sean la ultima foto de cada comic?
  #3 (permalink)  
Antiguo 22/04/2010, 04:48
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: seleccionar solo primer registro de tabla vinculada

quiero que me devuelva una lista consistente en la primera foto de cada comic
muchas gracias
  #4 (permalink)  
Antiguo 19/07/2011, 14:56
 
Fecha de Ingreso: septiembre-2010
Mensajes: 2
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: seleccionar solo primer registro de tabla vinculada

debes anexar la sentencia limit:

select * from formulario inner join (select * from fotos where formulario.id=fotos.id limit 1) order by idfoto

Última edición por kphwn; 19/07/2011 a las 15:06
  #5 (permalink)  
Antiguo 19/07/2011, 15:23
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: seleccionar solo primer registro de tabla vinculada

Hola JOSANCIN

Temas similares se han tratado muchas veces en este foro, te recomiendo que para la siguiente utilices primero la herramienta de búsqueda que existe en el foro para ver si encuentras algo que te pueda servir.

podrías hacer algo como esto:

Código MySQL:
Ver original
  1. mysql> INSERT INTO formulario VALUES (NULL, 'Comic uno', 'edit uno'),
  2.     -> (NULL, 'Comic dos', 'edit dos'),(NULL, 'Comic tres', 'edit tres');
  3. Query OK, 3 rows affected (0.00 sec)
  4. Records: 3  Duplicates: 0  Warnings: 0
  5.  
  6.  
  7. mysql> select * from formulario;
  8. +----+------------+---------------+
  9. | id | comic      | editorial     |
  10. +----+------------+---------------+
  11. |  1 | Comic uno  | edit uno      |
  12. |  2 | Comic dos  | edit dos      |
  13. |  3 | Comic tres | edit tres     |
  14. +----+------------+---------------+
  15. 3 rows in set (0.00 sec)
  16.  
  17.  
  18. mysql> INSERT INTO fotos VALUES (NULL, 'foto 1', 1), (NULL, 'foto 2', 1),
  19.     -> (NULL, 'foto 3', 1), (NULL, 'foto 4', 2), (NULL, 'foto 5', 2),
  20.     -> (NULL, 'foto 6', 3);
  21. Query OK, 6 rows affected (0.00 sec)
  22. Records: 6  Duplicates: 0  Warnings: 0
  23.  
  24. mysql> select * from fotos;
  25. +--------+------------+------+
  26. | idfoto | nombrefoto | id   |
  27. +--------+------------+------+
  28. |      1 | foto 1     |    1 |
  29. |      2 | foto 2     |    1 |
  30. |      3 | foto 3     |    1 |
  31. |      4 | foto 4     |    2 |
  32. |      5 | foto 5     |    2 |
  33. |      6 | foto 6     |    3 |
  34. +--------+------------+------+
  35. 6 rows in set (0.00 sec)
  36.  
  37. mysql> SELECT T1.id, T1.comic, T1.editorial, T2.idfoto, T2.nombrefoto
  38.     ->  FROM formulario T1 INNER JOIN fotos T2 ON T1.id = T2.id
  39.     ->  INNER JOIN
  40.     ->  (
  41.     ->  SELECT id, MIN(idfoto) min_idfoto FROM fotos GROUP BY id) T3
  42.     ->  ON T2.id = T3.id AND T2.idfoto = T3.min_idfoto;
  43. +----+------------+---------------+--------+------------+
  44. | id | comic      | editorial     | idfoto | nombrefoto |
  45. +----+------------+---------------+--------+------------+
  46. |  1 | Comic uno  | edit uno      |      1 | foto 1     |
  47. |  2 | Comic dos  | edit dos      |      4 | foto 4     |
  48. |  3 | Comic tres | edit tres     |      6 | foto 6     |
  49. +----+------------+---------------+--------+------------+
  50. 3 rows in set (0.00 sec)

Dale un vistazo a ver si es lo que necesitas.

Saludos
Leo

Etiquetas: primer, registro, seleccionar, tablas
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 22:07.