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

unir dos tablas con criterio de dos columnas

Estas en el tema de unir dos tablas con criterio de dos columnas en el foro de Mysql en Foros del Web. Hola que tal tengo el siguiente problema, presento el diseño de mis tablas: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original create table tbllocal ( idzona   ...
  #1 (permalink)  
Antiguo 03/09/2012, 16:14
Avatar de gerardo_goh  
Fecha de Ingreso: noviembre-2008
Mensajes: 107
Antigüedad: 15 años, 5 meses
Puntos: 1
unir dos tablas con criterio de dos columnas

Hola que tal tengo el siguiente problema, presento el diseño de mis tablas:

Código MySQL:
Ver original
  1. create table tbllocal (idzona      varchar(3)  not null,
  2.                        desc_zona   varchar(50) not null,
  3.                        cp          varchar(5)  not null,
  4.                        sistema     varchar(2)  not null);
  5.  
  6. insert into tbllocal (idzona,desc_zona,cp,sistema)
  7. values ('001','zona 1','05670','dm'),
  8.        ('001','zona 1-cod','05670','pk'),
  9.        ('003','zona 3','80000','dm'),
  10.        ('004','zona 4','90000','pk'),
  11.        ('005','zona 5','75000','pk'),
  12.        ('006','zona 6','85000','dm'),
  13.        ('007','zona 6-cod','85000','pk');
  14.  
  15.  
  16. create table tblcliente  (idcliente    int          primary key  auto_increment not null,
  17.                           nombre       varchar(50)  not null,
  18.                           sistema      varchar(2)   not null,
  19.                           cp           varchar(5)   not null);
  20.  
  21.  
  22.  
  23. insert into tblcliente (nombre,sistema,cp)
  24. values ('jorge','dm','05670'),
  25.        ('eder','pk','85000'),
  26.        ('isaac','pk','05670'),
  27.        ('pedro','dm','85000'),
  28.        ('ricardo','pk','75000'),
  29.        ('marco','dm','80000'),
  30.        ('francisco','dm','90000');

La situación es que deseo obtener un resumen de la siguiente manera, que teniendo en particularidad que en ambas tablas hay el
dato sistema y cp y para mi sería como la llave para poder unir la consulta

El resultado deseado sería:

Código MySQL:
Ver original
  1. idcliente|nombre     |sistema|desc_zona
  2. ---------------------------------------
  3. 1        |jorge      |dm     |zona1
  4. 2        |eder       |pk     |zona6-cod
  5. 3        |isaac      |pk     |zona1-cod
  6. 4        |pedro      |dm     |zona6
  7. 5        |ricardo    |pk     |zona5
  8. 6        |marco      |dm     |zona3
  9. 7        |francisco  |dm     |sin zona

para llegar este resultado tuve que agregar una columna en las dos tablas y llamarlas como key_local en la tabla de tbllocal, y en la
tabla de tblclient key_cliente y en ellas concatene sistema y cp.

lo que no quiero es alterar la tabla.

presento mi query, me pueden ayudar sin tener que realizar un alter table.

Código MySQL:
Ver original
  1. select a.idcliente,
  2.        a.nombre,
  3.        a.sistema,
  4.        ifnull(b.desc_zona,'sin zona')desc_zona
  5. from tblcliente a
  6. left join (select key_local,desc_zona from tbllocal) b
  7. on a.key_cliente=b.key_local;

Muchas gracias, Saludos!!!
Espero que me haya hecho explicar

Etiquetas: columnas, join, select, tabla, tablas
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 20:05.