Tema: Varios join
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/12/2011, 21:20
Avatar de truman_truman
truman_truman
 
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Varios join

Bueno justo cuendo lo resolví, vi tu respuesta, y te agradezco infinitamente el tiempo que tew tomaste para responder a mi consulta.

Pongo aquí el código, hasta ahora me está funcionando perfectamente, espero que se comporte bien en el futuro


Código MySQL:
Ver original
  1. au.id_usuario ,
  2. u.apellido_empresa,
  3. au.id_asignado_a
  4. FROM   usuarios u
  5. JOIN a_usuarios au
  6.   ON u.id_usuario = au.id_usuario and       u.id_ucat =   6
  7.            SELECT
  8.             au.id_usuario ,            
  9.             u.apellido_empresa,
  10.             au.id_asignado_a
  11.             FROM a_usuarios au
  12.             JOIN usuarios u
  13.             ON u.id_usuario = au.id_usuario            
  14.             WHERE   au.id_asignado_a = 20
  15.  
  16.         )xx ON xx.id_usuario =  au.id_asignado_a OR (  au.id_asignado_a = xx.id_asignado_a AND xx.id_usuario = au.id_usuario)
  17. WHERE  u.id_ucat =   6


Esa es la consulta abreviada que postié pero en realidad la consulta completa es la siguiente, y quisiera saber si es prudente hacer tantas consultas en una:



Código MySQL:
Ver original
  1.     p.provincia as provincia,
  2.     r.ruta as ruta,
  3.     c.ciudad as ciudad,
  4.     CONCAT(u.apellido_empresa,' ',u.nombre)     as nombre,
  5.     u.nombre as si_hay_nombre_es_persona,
  6.     u.id_ucat as idcat,
  7.     u.id_usuario as id_u,
  8.     uc.categoria,
  9.     (SELECT GROUP_CONCAT(email)  FROM emails  WHERE id_ue = u.id_usuario) AS todosemails,
  10.     (SELECT GROUP_CONCAT(telefono)  FROM telefonos tel WHERE tel.id_ut = u.id_usuario) AS todostel,
  11.     (
  12.         SELECT
  13.         GROUP_CONCAT((
  14.            
  15.             SELECT CONCAT(u.apellido_empresa,' ',u.nombre)
  16.             FROM usuarios u
  17.             WHERE u.id_usuario = au.id_asignado_a
  18.             )
  19.         )
  20.         FROM a_usuarios au
  21.         WHERE  au.id_usuario =  u.id_usuario
  22.     ) AS asignadoa
  23.  
  24.     FROM   usuarios u
  25.     LEFT OUTER JOIN rutas r ON u.id_ruta = r.id_ruta
  26.     LEFT OUTER JOIN ciudades c  ON u.id_ciu = c.id_ciu
  27.     LEFT OUTER JOIN provincias p  ON u.id_prov = p.id_prov
  28.     LEFT OUTER JOIN u_origen o ON u.id_origen = o.id_origen
  29.     JOIN u_cat uc ON uc.id_ucat = u.id_ucat
  30.      JOIN a_usuarios au
  31.   ON u.id_usuario = au.id_usuario and       u.id_ucat =   6
  32.            SELECT
  33.             au.id_usuario ,            
  34.             au.id_asignado_a
  35.             FROM a_usuarios au
  36.             JOIN usuarios u
  37.             ON u.id_usuario = au.id_usuario            
  38.             WHERE   au.id_asignado_a = 20
  39.  
  40.         )xx ON xx.id_usuario =  au.id_asignado_a OR (  au.id_asignado_a = xx.id_asignado_a AND xx.id_usuario = au.id_usuario)
  41.       WHERE  u.id_ucat = 6  AND CONCAT(u.apellido_empresa,u.nombre) like  '%%'
  42.     ORDER BY apellido_empresa
  43.     LIMIT 0, 200
  44.          
  45.           ;
__________________
la la la