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

Join a una tabla u otra según una condicion

Estas en el tema de Join a una tabla u otra según una condicion en el foro de Mysql en Foros del Web. Hola! Como puedo hacer un join a dos tablas en funcion de un valor? Por ejemplo teniendo las tablas clientesArg y clientesExt, y una tabla ...
  #1 (permalink)  
Antiguo 06/08/2015, 08:40
 
Fecha de Ingreso: abril-2015
Mensajes: 4
Antigüedad: 9 años
Puntos: 0
Join a una tabla u otra según una condicion

Hola! Como puedo hacer un join a dos tablas en funcion de un valor?
Por ejemplo teniendo las tablas clientesArg y clientesExt, y una tabla de vencimientos q tiene entre otros campos fecha, tipo de cliente (arg o ext) y id cliente. Si yo quiero obtener el nombre del cliente deberia hacer:
SELECT * FROM vencimientos LEFT OUTER JOIN ...tabla...? on vencimientos.idcliente = ...tabla...?.idcliente WHERE ............
En donde dice ...tabla...? deberia decir clientesArg o clientesExt segun lo que diga el campo tipo de cliente de la tabla vencimientos.

Muchas gracias
saludos!
  #2 (permalink)  
Antiguo 18/08/2015, 05:20
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: Join a una tabla u otra según una condicion

Hola Pablo,

si no te he entendido mal, quieres relacionar dos tablas mediante JOIN en funcion de un valor determinado?

prueba esto:
Código SQL:
Ver original
  1. SELECT * FROM tabla1 JOIN tabla2 ON tabla1.campo1=tabla2.campo1 WHERE valor='$valor'

Saludos

Última edición por gnzsoloyo; 18/08/2015 a las 06:10
  #3 (permalink)  
Antiguo 22/08/2015, 11:15
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Join a una tabla u otra según una condicion

Es medio complicado, actualmente tengo un problema similar y la mejor aproximacion a la solucion que logre fue esta:

vencimientos
- fecha
- tipoCliente
- clienteId

clientesArg
- id
- nombre
- domicilio

clientesExt
- id
- nombre
- domicilio

Código MySQL:
Ver original
  1. SELECT v.fecha fecha, IFNULL(ca.nombre, ce.nombre) nombre, IFNULL(ca.domicilio, ce.domicilio) domicilio
  2. FROM vencimientos v
  3. LEFT JOIN clientesArg ca ON (v.tipoCliente = 1 AND v.clienteId = ca.id)
  4. LEFT JOIN clientesExt ca ON (v.tipoCliente = 2 AND v.clienteId = ce.id)
  5. -- Para simular el inner join hay que agregar esta condicion:
  6. -- WHERE (ca.id IS NOT NULL XOR ce.id IS NOT NULL)

El problema de esto es que no permite a la base de datos realizar integridad referencial (salvo que se definan triggers) asi que nose si es la alternativa correcta.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Etiquetas: campo, fecha, join, según, 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 21:28.