Autor
|
Tema: Como sacar nombres y añadir una imagen (Leído 3,584 veces)
|
Brida
|
Os comento, tengo una base de datos con una tabla con nombre de alumnos y otra con fotos de esos alumnos. Las tablas son:
alumnos(ID, nombre, apellido); fotos(ID, ID_alumno, nombre_foto, timestamp);
Lo que he hecho para sacar la información es:
SELECT al.nombre, al.apellidos FROM alumnos al LEFT JOIN fotos fo ON al.ID=fo.ID_alumno
La mayoría de veces me aparece todo perfecto, pero cuando un alumno tiene dos o más fotos el resultado aparece duplicado.
¿Qué solución se os ocurre aparte de usar un GROUP BY la.ID? Por que creo que debe existir alguna forma mejor ¿no?
¡Gracias!
|
|
|
En línea
|
|
|
|
engel lex
|
supongo que quieres un solo resultado (realmente dices que sale duplicado pero no como quieres que salga, pero aqui dejo esto) puedes usar LIMIT, capypaste de dev.mysql.com a cláusula LIMIT puede usarse para restringir el número de registros retornados por el comando SELECT. LIMIT tiene uno o dos argumentos numéricos, que deben ser enteros positivos (incluyendo cero).
Con dos argumentos, el primer argumento especifica el desplazamiento del primer registro a retornar. El desplazamiento del registro inicial es 0 (no 1):
mysql> SELECT * FROM table LIMIT 5,10; # Retrieve rows 6-15 . . . mysql> SELECT * FROM table LIMIT 5; # Retrieve first 5 rows
puedes usar LIMIT 1 para obtener un solo registro
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
1mpuls0
Desconectado
Mensajes: 1.186
|
La mayoría de veces me aparece todo perfecto, pero cuando un alumno tiene dos o más fotos el resultado aparece duplicado.
¿Qué solución se os ocurre aparte de usar un GROUP BY la.ID? Por que creo que debe existir alguna forma mejor ¿no?
No regresa duplicados xD, coloca el campo fo.nombre_foto y verás, aunque no sé que quieres hacer. Si necesitas todas las fotos del alumno tu consulta está bien. Si necesitas la última foto capturada tendrías que hacer lo siguiente. SELECT * FROM alumnos al INNER JOIN (SELECT ID_alumno, MAX(TIMESTAMP) FROM fotos GROUP BY ID_alumno) fo ON al.ID=fo.ID_alumno
1. No se que tiene que ver tu consulta con php 2. No utilices palabras reservadas por el motor de base de datos (timestamp) Saludos.
|
|
|
En línea
|
abc
|
|
|
Brida
|
Gracias.
Darhius lo que quiero es que salgo sólo una foto.
|
|
|
En línea
|
|
|
|
1mpuls0
Desconectado
Mensajes: 1.186
|
Pero cuál es esa "solo una" la más reciente, la más antigua?. Por cierto que datos necesitas en la consulta?, porque en esa que te muestro hay algo "raro"  y si me dices que campos exactamente requieres puedo ayudarte a arreglarla.
|
|
« Última modificación: 16 Agosto 2013, 17:11 pm por Darhius »
|
En línea
|
abc
|
|
|
Brida
|
Pero cuál es esa "solo una" la más reciente, la más antigua?. Por cierto que datos necesitas en la consulta?, porque en esa que te muestro hay algo "raro"  y si me dices que campos exactamente requieres puedo ayudarte a arreglarla. No importa cual, los alumnos salen igual de feos en todas.
|
|
|
En línea
|
|
|
|
basickdagger
Desconectado
Mensajes: 650
System.out.println("this is weird as fuck");
|
utilizando limit 1 ?
|
|
|
En línea
|
|
|
|
1mpuls0
Desconectado
Mensajes: 1.186
|
No importa cual, los alumnos salen igual de feos en todas.
xDD Puedes hacerlo utilizando group by SELECT al.ID AS ID_alumno, al.nombre, al.apellido, fo.ID AS ID_foto, fo.nombre_foto FROM alumnos al LEFT JOIN fotos fo ON al.ID=fo.ID_alumno GROUP BY al.ID
También se puede con distinct deja ver de que forma... con subconsultas... SELECT al.ID AS ID_alumno, al.nombre, al.apellido, fo.ID AS ID_foto, fo.nombre_foto FROM alumnos al, fotos fo WHERE al.ID=fo.ID_alumno GROUP BY al.ID
|
|
« Última modificación: 16 Agosto 2013, 20:05 pm por Darhius »
|
En línea
|
abc
|
|
|
Brida
|
Vale mil gracias, pensaba que se debía de hacer sin el Group By, pero sin problemas :-P
Gracias!
|
|
|
En línea
|
|
|
|
1mpuls0
Desconectado
Mensajes: 1.186
|
Entonces te sirve así?.
Por qué no lo quieres hacer con group by? o solo buscas otra alternativa?.
Es que... olvidé una excepción de distinct con subquerys aunque estoy intentando de otra forma además de group by.
|
|
|
En línea
|
abc
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Añadir imagen unos segundos
Multimedia
|
dimitrix
|
2
|
2,671
|
20 Enero 2008, 13:44 pm
por dimitrix
|
|
|
Añadir más datos a una imágen .iso?
Software
|
gregory90
|
8
|
5,055
|
6 Junio 2011, 18:11 pm
por raul338
|
|
|
Añadir imagen a un JPanel
Java
|
juancaa
|
3
|
4,455
|
22 Junio 2012, 13:24 pm
por juancaa
|
|
|
duda sobre añadir imagen en el body y cambiarla de lugar
Desarrollo Web
|
Ahm_Shere
|
4
|
2,246
|
19 Diciembre 2012, 01:10 am
por Ahm_Shere
|
|
|
Añadir imagen a columna datagriview.
.NET (C#, VB.NET, ASP)
|
nevachana
|
2
|
2,018
|
25 Octubre 2015, 09:13 am
por nevachana
|
|