Ver Mensaje Individual
  #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: 12 años
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