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

Al hacer 'distinct' me sigue mostrando datos repetidos

Estas en el tema de Al hacer 'distinct' me sigue mostrando datos repetidos en el foro de Mysql en Foros del Web. Hola a todos, soy asidua al foro de PHP y os hago una visitilla por Mysql a ver si pueden ayudarme, tengo una tabla 'Usuarios': ...
  #1 (permalink)  
Antiguo 16/10/2011, 08:33
Avatar de TheScript  
Fecha de Ingreso: septiembre-2011
Ubicación: Spain
Mensajes: 164
Antigüedad: 13 años, 2 meses
Puntos: 30
Al hacer 'distinct' me sigue mostrando datos repetidos

Hola a todos, soy asidua al foro de PHP y os hago una visitilla por Mysql a ver si pueden ayudarme, tengo una tabla 'Usuarios':

Código:
Id_ usuario || usuario || tipo _usuario
Los usuarios pueden ser de tres tipos, y cada uno de ellos tienen almacenados unos datos diferentes en su perfil, por ello he tenido que crear tres tablas,

Código:
TABLA PERFIL_A
Id_ perfil || id_usuario || CIUDAD || LUGAR || etc etc

TABLA PERFIL_B
Id_ perfil || id_usuario ||  CIUDAD || LUGAR || etc etc

TABLA PERFIL_C
Id_ perfil || id_usuario ||  CIUDAD || LUGAR || etc etc
Lo que necesito es que me muestre todos los usuarios que hay en la tabla 'usuarios' y que me muestre a que ciudad y a que lugar pertenecen (tablas perfil_a , perfil_b, perfil_c).

He probado con esto que es un poco tonto ya que me duplica en cada registro tres veces la ciudad y tres veces el lugar :

Código:
SELECT distinct U.id_usuario, U.usuario, U.tipo_usuario,PU.ciudad, PU.lugar, 
PA.ciudad, PA.lugar, PC.ciudad, PC.lugar 
FROM usuarios U, perfil_u PU, perfil_c PC, perfil_a PA;
¿Alguien puede decirme u orientarme de como puedo decirle que de cada usuario me capture su ciudad y su lugar buscando en las · tablas de perfiles?

Espero haberme explicado bien Un saludo!
  #2 (permalink)  
Antiguo 16/10/2011, 09:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Al hacer 'distinct' me sigue mostrando datos repetidos

Yo lo haría con UNION.
SELECT U.Id_usuario, U.usuario, U.tipo_usuario, PA.ciudad, PA.lugar
FROM usuarios U INNER JOIN PERFIL_A PA ON U.Id_usuario = PA.id_usuario
UNION
SELECT U.Id_usuario, U.usuario, U.tipo_usuario, PB.ciudad, PB.lugar
FROM usuarios U INNER JOIN PERFIL_B PB ON U.Id_usuario = PB.id_usuario
UNION
SELECT U.Id_usuario, U.usuario, U.tipo_usuario, PC.ciudad, PC.lugar
FROM usuarios U INNER JOIN PERFIL_C PC ON U.Id_usuario = PC.id_usuario
ORDER BY usuario

Al usar UNION si un usuario pertenece a más de un perfil, no repetirá el dato, si el id_usuario, la ciudad y el lugar coinciden.
  #3 (permalink)  
Antiguo 16/10/2011, 10:11
Avatar de TheScript  
Fecha de Ingreso: septiembre-2011
Ubicación: Spain
Mensajes: 164
Antigüedad: 13 años, 2 meses
Puntos: 30
Respuesta: Al hacer 'distinct' me sigue mostrando datos repetidos

Hey jurena, me ha venido de perlas tu ayuda, yo estaba intentandolo ahora con UNION ALL pero no lo estaba enfocando bien, así que con tu ayuda se me ha ido un problema que me estaba llevando ya mas tiempo de la cuenta. Un saludo y muchas gracias!!!

Etiquetas: distinct, php, repetidos, select, sql, tabla
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:42.