Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/02/2016, 09:22
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 9 meses
Puntos: 774
Respuesta: listado de comunas por clientes y por area con left join

Código SQL:
Ver original
  1. CREATE TABLE #Comuna
  2. (Id INT,
  3. nombre VARCHAR(20))
  4.  
  5. INSERT INTO #comuna VALUES (1,'ARICA')
  6. INSERT INTO #comuna VALUES (2,'PUTRE')
  7. INSERT INTO #comuna VALUES (3,'IQUIQUE')
  8.  
  9. CREATE TABLE #Cliente
  10. (Nombre VARCHAR(20), Correo VARCHAR(50), comuna_id INT)
  11.  
  12. INSERT INTO #cliente VALUES ('JUAN', '[email protected]', 1)
  13. INSERT INTO #cliente VALUES ('JOSE', '[email protected]',1)
  14. INSERT INTO #cliente VALUES ('JAVIER', '[email protected]',3)
  15. INSERT INTO #cliente VALUES ('PEDRO', '[email protected]',3)
  16.  
  17. CREATE TABLE #Cliente_area
  18. (Cliente_correo VARCHAR(30), area VARCHAR(20))
  19.  
  20. INSERT INTO #cliente_area VALUES ('[email protected]','COMERCIO')
  21. INSERT INTO #cliente_area VALUES ('[email protected]','ESTADISTICA')
  22. INSERT INTO #cliente_area VALUES ('[email protected]','COMERCIO')
  23. INSERT INTO #cliente_area VALUES ('[email protected]','COMERCIO')
  24. INSERT INTO #cliente_area VALUES ('[email protected]','ESTADISTICA')
  25.  
  26. SELECT isnull(comuna,t4.nombre) AS comuna, isnull(cliente,'') AS cliente, isnull(correo,'') AS correo FROM(
  27. SELECT t3.nombre AS comuna, t1.nombre AS cliente, correo FROM #cliente AS t1
  28. LEFT JOIN #cliente_area AS t2 ON (t1.Correo=t2.Cliente_correo)
  29. LEFT JOIN #comuna AS t3 ON (t1.comuna_id=t3.Id)
  30. WHERE t2.area='comercio'
  31. ) AS completa RIGHT JOIN #comuna AS t4 ON (completa.comuna=t4.nombre)
  32.  
  33. /*Resultado:
  34. comuna  cliente correo
  35. ARICA   JUAN    [email protected]
  36. ARICA   JOSE    [email protected]
  37. PUTRE      
  38. IQUIQUE PEDRO   [email protected]
  39. */
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me