Ver Mensaje Individual
  #9 (permalink)  
Antiguo 25/01/2014, 18:27
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Inner join de 3 tablas

Hola,

Cita:
Iniciado por Maru77 Ver Mensaje
Hackmanc, el nro_rifa NO guarda el id_cliente, me expresé mal, pero es como una especie de código o identificación ya que es un número que no se repite.
El problema es que ese pequeño detalle hace que una consulta no funcione, y digo no funcione completamente, dando resultados vacíos o erróneos completamente.

Posiblemente,

Código SQL:
Ver original
  1. SELECT ...
  2. FROM cobranzas
  3. INNER JOIN cobradores ON cobranzas.cobrador = cobradores.codigo_cobrador
  4. INNER JOIN clientes ON cobranzas.nro_rifa = clientes.nro_rifa
  5. WHERE cobradores.id_cobrador = 1

Si le das vuelta a la consulta, poniendo cobranzas como la tabla primaria, resulta mucho mas simple comprender el problema y posiblemente se te va a ser mas fácil resolverlo. Una vez resultas el problema de saber si el ID (nro_rifa) que estas guardando en cobranzas corresponde al nro_rifa o id_cliente en la tabla clientes.

Eso sucede porque estás usando 'surrogate keys'. Tienes un ID para identificar el registro en la tabla, pero al mismo tiempo tienes un código. Como supongo (según lo que comentaste) que se hizo la relación por la 'natural key', posiblemente te va a funciona la consulta que mostré, pero va a depender completamente de como se haya hecho verdaderamente la relación en la base de datos.

Basados en el hecho que nro_rifa NO guarda el ID del cliente, entonces esta es la relación,
Código SQL:
Ver original
  1. INNER JOIN clientes ON cobranzas.nro_rifa = clientes.nro_rifa
Con el problema que entonces en las relaciones se usa la 'natural key', eso normalmente es un problema de diseño.

Saludos,

Última edición por HackmanC; 25/01/2014 a las 18:38 Razón: aclarar y limpiar