Ver Mensaje Individual
  #3 (permalink)  
Antiguo 20/08/2009, 07:54
diego_hanseatico
 
Fecha de Ingreso: agosto-2009
Mensajes: 10
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problemas de orientacion: LEFT JOIN o INNER JOIN

Gracias Andrés,

Mi duda era general, porque normalmente no sé qué método y orden seguir para escribir los JOINS. Los conceptos INNER, LEFT o RIGHT JOIN los entiendo más o menos. Mi problema es implementarlo cuando tengo tal cantidad de tablas que están interrelacionadas. Pero el consejo que me has dado de empezar escribiendo JOINS por el recibo (invoice) me parece muy últil. Hasta ahora, en mi proyecto siempre he empezado por client, que no está subordinado a ninguna otra tabla... Pero también tengo otras tablas que no están subordinadas a ninguna otra y ramificaciones que me hacen dudar de que está a la izquierda en un INNER JOIN cuando escribo, por ejemplo:

client cl INNER JOIN
company co ON cl.id = co.id_client INNER JOIN
debitor deb ON co.id = deb.id_company

y después añado un...

INNER JOIN creditor cred ON cl.id = cred.id_client AND inv.id_creditor = cred.id

¿a qué se refiere este último inner join (en naranja)? Parece que se refiere a client, ¿no? Y si entre client cl... Vienen otras tablas de las que tb. dependiera creditor? Por ejemplo:

client cl INNER JOIN
company co ON cl.id = co.id_client INNER JOIN
debitor deb ON co.id = deb.id_company INNER JOIN
clientAccount ca ON cl.id = ca.id_debitor INNER JOIN
creditor cred ON cl.id = cred.id_client AND inv.id_creditor = cred.id
AND ca.id = cred.id_clientAccount

En este caso, ¿a quién se refiere el inner join a client, a clientAccount o a los dos?
No sé, ese es el concepto que no me queda claro... Cuando sólo hay una secuencia de dependencias entre tablas, no es ningún problema. Claro, que en este caso, como tú dices con el INNER JOIN lo que hace match en ambas tablas, no importa cual vaya primero o cual despues, es lo que obtengo... Pero, ¿lo que hace match en client o lo que también hiciera match en clientAccount, o en ambas tablas?

Si me pudieséis dar algún tip o links de tutoriales y ejemplos, pues me iba a alegrar mucho.

Gracias