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

[SOLUCIONADO] listado de comunas por clientes y por area con left join

Estas en el tema de listado de comunas por clientes y por area con left join en el foro de Bases de Datos General en Foros del Web. Estimados, ojala me pudieran ayudar con esta consulta que no me resulta: Tablas: Comuna Id | nombre 1 ARICA 2 PUTRE 3 IQUIQUE Cliente Nombre ...
  #1 (permalink)  
Antiguo 11/02/2016, 08:41
 
Fecha de Ingreso: febrero-2008
Mensajes: 5
Antigüedad: 16 años, 2 meses
Puntos: 0
listado de comunas por clientes y por area con left join

Estimados, ojala me pudieran ayudar con esta consulta que no me resulta:

Tablas:

Comuna
Id | nombre
1 ARICA
2 PUTRE
3 IQUIQUE

Cliente
Nombre | Correo | comuna_id
JUAN [email protected] 1
JOSE [email protected] 1
JAVIER [email protected] 3
PEDRO [email protected] 3

Cliente_area
Cliente_correo | área
[email protected] COMERCIO
[email protected] ESTADISTICA
[email protected] COMERCIO
[email protected] COMERCIO
[email protected] ESTADISTICA

Lo que necesito realizar es listar a todas las comunas con sus respectivos clientes asociados, dependiendo del área seleccionada, además si una comuna no tiene clientes de acuerdo al área seleccionada, que igual muestre la comuna pero sin la información del cliente, esto para saber que comunas no tienen clientes asociados segun el area indicada
Por ejemplo:
Consulta: mostrar todos los clientes que tengan como área “COMERCIO”

COMUNA | CLIENTE | CORREO
ARICA | JUAN | [email protected]
ARICA | JOSE | [email protected]
PUTRE | NULL | NULL
IQUIQUE | PEDRO | [email protected]

esta es mi consulta que he tratado de hacer, pero no me resulta

Código SQL:
Ver original
  1. SELECT comuna.nombre, cliente.nombre, cliente.correo
  2. FROM comunas
  3. LEFT JOIN clientes ON clientes.comuna_id = comuna.id
  4. LEFT JOIN cliente_area ON cliente_area.cliente_correo = cliente.correo AND cliente_area.area= "COMERCIO"

al realizar esta consulta me lista todas las comunas y todos los clientes sin filtrar por COMERCIO, ojala me puedan ayudar

Saludos

Última edición por gnzsoloyo; 12/02/2016 a las 13:38
  #2 (permalink)  
Antiguo 11/02/2016, 09:22
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 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
  #3 (permalink)  
Antiguo 12/02/2016, 12:56
 
Fecha de Ingreso: febrero-2008
Mensajes: 5
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: listado de comunas por clientes y por area con left join

Gracias por responder, voy a probar la consulta y te cuento como me fue

Gracias
  #4 (permalink)  
Antiguo 16/02/2016, 09:06
 
Fecha de Ingreso: febrero-2008
Mensajes: 5
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: listado de comunas por clientes y por area con left join

Gracias Libras, funciono perfecto

Saludos

Etiquetas: area, join, left, listado, select, 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




La zona horaria es GMT -6. Ahora son las 17:14.