Hola,
acabo de empezar a trabajar con bases de datos hace poco y me encuentro siempre con el mismo problema. No sé en que order situar las relaciones entre las tablas o JOINS para obtener el resultado indicado. Ya sé que hay millones de tutoriales en internet con un par de ejemplos sobre como trabajar con INNER, LEFT, RIGHT y otros JOINS, pero el problema es que todos los ejemplos son siempre muy sencillos, como máximo con tres tablas...
Ahora bien, ¿qué sucede cuando hay muchas tablas? ¿Cuál debe ser considerada "tabla izquiera" y cuál "tabla derecha"? Ejemplo:
client------------->company------------------->debitor-------->debitorText
|
|
|
|
creditor----------->invoice<-----------------------
|
|
|--->creditorText
En este caso hay una "bifurcación", porque hay dos ramas en las relacciones entre las tablas. Por un lado, en direccion al debitor la consulta se vería así:
client cl INNER JOIN
company co ON cl.id = co.id_client INNER JOIN
debitor deb ON co.id = deb.id_company INNER JOIN
invoice inv ON deb.id = inv.id_debitor ..... etc. etc.
Pero, ¿qué sucede con la ramificación de "creditor"? Porque, después de introducir invoice inv ON deb.id = inv.id_debitor ya no sé cual es la tabla izquierda y cual la derecha en este JOIN... Y realmente si continúo así:
client cl INNER JOIN
company co ON cl.id = co.id_client INNER JOIN
debitor deb ON co.id = deb.id_company INNER JOIN
invoice inv ON deb.id = inv.id_debitor INNER JOIN
creditor cred ON cl.id = cred.id_client AND inv.id_creditor = cred.id INNER JOIN
creditorText credTxt ON cred.id = credTxt.id_creditor etc etc.
La tabla izquierda es client, ¿cierto? No es invoice, ¿verdad? O quizás debería considerarlo así:
tipo de JOIN + tabla derecha + donde + indice tabla izda. + indice tabla derecha
INNER JOIN + creditor cred + ON + client .id = cred.id
¿Me podrías recomendar tutoriales o ejemplos sencillos que me puedan ayudar con estas consultas no tan sencillas? ¿Cómo saber donde está mi tabla derecha y mi tabla derecha?
Disculpalme toda la gente cuya inteligencia se pueda sentir ofendida por esta pregunta, pero en algún momento todos somos principiantes.
Gracias por adelantado