Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/02/2011, 01:54
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Combinando 2 selects

para eso usa group_concat(access SEPARATOR '|') con GROUP BY el iduser
echa un vistazo al manual. Yo uniría con INNER JOIN primero el iduser y el access, y luego haría a su alrededor los LEFT JOIN que necesitara. Polr cierto, no sé por qué usas LEFT JOIN en la consulta de accesos; creo que no es necesario. No he probado nada, pero esa es la idea.

Código MySQL:
Ver original
  1. SELECT t1.accesos, u.`iduser`, u.`fullname`, u.`gender`, c.`company`, u.`email`, u.`phone`, ut.`usertype`  
  2. FROM `users` u INNER JOIN (SELECT us.iduser, GROUP_CONCAT(a.access SEPARATOR '|') accesos FROM `users` us  
  3. INNER JOIN `usertypes` ut ON ut.`idusertype` = u.`usertypeid`  
  4. INNER JOIN `types_access` ta ON ta.`usertypeid` = ut.`idusertype`  
  5. INNER JOIN `access` a ON a.`idaccess` = ta.`accessid`  
  6. WHERE u.`iduser` = @id) GROUP BY u.iduser)t1 ON u.iduser = us.iduser LEFT JOIN `companies` c ON c.`idcompany` = u.`companyid`  
  7. LEFT JOIN `usertypes` ut ON ut.`idusertype` = u.`usertypeid`  
  8. WHERE u.`iduser` = @id;

Última edición por jurena; 07/02/2011 a las 02:04