elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Como sacar nombres y añadir una imagen
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Como sacar nombres y añadir una imagen  (Leído 3,809 veces)
Brida

Desconectado Desconectado

Mensajes: 47



Ver Perfil WWW
Como sacar nombres y añadir una imagen
« en: 16 Agosto 2013, 06:11 am »

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como sacar nombres y añadir una imagen
« Respuesta #1 en: 16 Agosto 2013, 06:32 am »

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

Citar
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 Desconectado

Mensajes: 1.186


Ver Perfil
Re: Como sacar nombres y añadir una imagen
« Respuesta #2 en: 16 Agosto 2013, 07:48 am »

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.

Código
  1. SELECT * FROM alumnos al INNER JOIN
  2. (SELECT ID_alumno, MAX(TIMESTAMP) FROM fotos GROUP BY ID_alumno) fo
  3. ON al.ID=fo.ID_alumno
  4.  

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

Desconectado Desconectado

Mensajes: 47



Ver Perfil WWW
Re: Como sacar nombres y añadir una imagen
« Respuesta #3 en: 16 Agosto 2013, 15:33 pm »

Gracias.

Darhius lo que quiero es que salgo sólo una foto.
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Como sacar nombres y añadir una imagen
« Respuesta #4 en: 16 Agosto 2013, 16:26 pm »

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" :P 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

Desconectado Desconectado

Mensajes: 47



Ver Perfil WWW
Re: Como sacar nombres y añadir una imagen
« Respuesta #5 en: 16 Agosto 2013, 19:22 pm »

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" :P 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 Desconectado

Mensajes: 650


System.out.println("this is weird as fuck");


Ver Perfil
Re: Como sacar nombres y añadir una imagen
« Respuesta #6 en: 16 Agosto 2013, 19:27 pm »

utilizando limit 1 ?

En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Como sacar nombres y añadir una imagen
« Respuesta #7 en: 16 Agosto 2013, 19:33 pm »

No importa cual, los alumnos salen igual de feos en todas.

xDD

Puedes hacerlo utilizando group by
Código
  1. SELECT al.ID AS ID_alumno, al.nombre, al.apellido, fo.ID AS ID_foto, fo.nombre_foto FROM alumnos al
  2. LEFT JOIN fotos fo ON al.ID=fo.ID_alumno GROUP BY al.ID
  3.  

También se puede con distinct deja ver de que forma...

con subconsultas...

Código
  1. SELECT al.ID AS ID_alumno, al.nombre, al.apellido, fo.ID AS ID_foto, fo.nombre_foto FROM alumnos al, fotos fo
  2. WHERE al.ID=fo.ID_alumno GROUP BY al.ID
  3.  
« Última modificación: 16 Agosto 2013, 20:05 pm por Darhius » En línea

abc
Brida

Desconectado Desconectado

Mensajes: 47



Ver Perfil WWW
Re: Como sacar nombres y añadir una imagen
« Respuesta #8 en: 16 Agosto 2013, 19:53 pm »

Vale mil gracias, pensaba que se debía de hacer sin el Group By, pero sin problemas :-P

Gracias!
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Como sacar nombres y añadir una imagen
« Respuesta #9 en: 16 Agosto 2013, 20:00 pm »

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
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Añadir imagen unos segundos
Multimedia
dimitrix 2 2,779 Último mensaje 20 Enero 2008, 13:44 pm
por dimitrix
Añadir más datos a una imágen .iso?
Software
gregory90 8 5,206 Último mensaje 6 Junio 2011, 18:11 pm
por raul338
Añadir imagen a un JPanel
Java
juancaa 3 4,607 Último mensaje 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,423 Último mensaje 19 Diciembre 2012, 01:10 am
por Ahm_Shere
Añadir imagen a columna datagriview.
.NET (C#, VB.NET, ASP)
nevachana 2 2,171 Último mensaje 25 Octubre 2015, 09:13 am
por nevachana
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines