Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/07/2013, 01:12
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 2 meses
Puntos: 574
Respuesta: left outher join

Cita:
quiero que la consulta me arroje esto(11 registros)


321, 'g',NULL
319, 'a',NULL
320, 'b'
317, 'c'
318, 'd',NUL
315, 'e'
316, 'f'
322, 'g'
323, 'h'
324, 'i',NULL
325, 'j'
No se entiende para que quieres ese resueltado, puesto que es una lista de los usuarios, con null si no tienen amigos y nada sitienen amigos...???

Para obtener eso o algo parecido debes agregar... es decir tu no buscas la lista de "amistades" donde obvimente tendras mas registros que usuarios si tienes usuarios con mas de un amigo... sino una lista de usuarios con información de si tienen o no amigos...

Código MySQL:
Ver original
  1. CREATE TABLE usuarios
  2.     (
  3.      id INT NOT NULL PRIMARY KEY,
  4.      nombre varchar(20)
  5.     );
  6.  
  7.  
  8. INSERT INTO usuarios
  9. (id,nombre)
  10. (321, 'g'),
  11. (319, 'a'),
  12. (320, 'b'),
  13. (317, 'c'),
  14. (318, 'd'),
  15. (315, 'e'),
  16. (316, 'f'),
  17. (322, 'g'),
  18. (323, 'h'),
  19. (324, 'i'),
  20. (325, 'j');
  21.  
  22. CREATE TABLE amigos
  23.     (
  24.      idusuario INT,
  25.      idamigo INT,
  26.      estadosolicitud varchar(20)
  27.     );
  28.  
  29. INSERT INTO amigos
  30. (idusuario,idamigo,estadosolicitud)
  31. (322, 325, 'ACEPTADA'),
  32. (317, 323, 'YES'),
  33. (317, 315, 'YES'),
  34. (315, 320, 'YES'),
  35. (322, 315, 'ACEPTADA'),
  36. (315, 316, 'YES');

Código MySQL:
Ver original
  1. SELECT usuarios.id,usuarios.nombre,
  2. SUM(if(amigos.idusuario IS NULL,0,1)) amistades
  3. FROM usuarios
  4. LEFT OUTER JOIN amigos ON
  5. (usuarios.id=amigos.idusuario)
  6. OR (usuarios.id=amigos.idamigo)
  7. GROUP BY usuarios.id,usuarios.nombre
  8. ORDER BY usuarios.id;


Código pre:
Ver original
  1. ID     NOMBRE     AMISTADES
  2. 315     e     4
  3. 316     f     1
  4. 317     c     2
  5. 318     d     0
  6. 319     a     0
  7. 320     b     1
  8. 321     g     0
  9. 322     g     2
  10. 323     h     1
  11. 324     i     0
  12. 325     j     1

http://sqlfiddle.com/#!2/28563/5/0
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 30/07/2013 a las 01:19