Hola a todo con esta entrada daremos inicio a los tutoriales y pequeñas ayuda con respecto a lenguajes o cosas que le pueden ayudar, ayer mismo una amiga me pidió ayuda con un inner join, que es un inner join es una unión que se hace entre tablas relacionada en una base de datos relacional o bien dicho para serlo mas fácil en toda base de datos que puedas relacionar tablas a través de claves foráneas (esto no lo veremos ya que creo que si están viendo inner join ya saben estos conceptos).
Para que sirven los inner join, rigth join, left join, a ver un ejemplo fácil de entender, ustedes tienen tres tablas
El inner join nos servirá por ejemplo determinar que libro se presto a un usuario.
esto seria asi :
select t2.nombre, t3.nombre from t_prestamo as t1 inner join t_usuario as t2 on t1.id_usuario = t2.id_usuario inner join t_libro as t3 on t1.cod_libro = t3.cod_libro
el resultado seria
Si se dan cuenta solo nos muestra lo que solicitamos
y los datos de las tabla
La primera tabla es Libro, la segunda prestamos y la ultima usuarios, se se fijan bien la de prestamos es la tabla que solo tiene relaciones de las demás 3 tablas, no incluí fecha ya que para el ejemplo no es necesario.
Veamos el inner join que hicimos ya
select t2.nombre, t3.nombre from t_prestamo as t1 inner join t_usuario as t2 on t1.id_usuario = t2.id_usuario inner join t_libro as t3 on t1.cod_libro = t3.cod_libro
el inner join es una palabra reservada para las base relacionada que devuelve datos que si hay datos en el campo que nombramos como referencia si no hay datos se salta y ahí la diferencia los Join right y left. pero no nos adelantemos ya primero se hacer un select cualquiera con los campos que requerimos y el from de la tabla que se requiere extraer los datos aquí esta la gracia después de hacer, colocamos la palabra inner join que le dice al gestor de base de datos que estamos buscando entre “n” tablas, esto lo determina el gestor por que nosotro hacemos n inner join, los campos que deseamos extraer, a continuación se coloca la tabla que queremos “unir” y luego ocupamos la palabra reservada on que quiere decir “en” los campos que se relacionan las tablas. vamos por parte se que es medio complicado de entender pero vamos encaminado,
from t_prestamo as t1 inner join t_usuario as t2 on t1.id_usuario = t2.id_usuario
Lo que ven ustedes acá es un extracto del código , es para explicarle lo siguiente acá la tabla principal es prestamos y yo la identifico como (as) t1, por una cosa mas de orden y para no confundirme, y las demás tabla que necesito extraer el daoo los datos en particular en el ejemplo es nombre del usuario que esta en la tabla usuario y el nombre del libro que esta en la tabla libro, para eso usamos inner join para unir y en on especificamos en que punto se unen las dos tablas en es te caso se unen a través de la clave primaria de la tabla usuario llamada id_usuario y en prestamos la clave foráneas id_usuario. eso es un inner join.
Para mi un inner join es la union entre dos conjunto de datos pero se especifica cual es la union para extraer un dato en particular.
lo que yo hago para hacer un inner join es lo siguiente
- Identifico cada tabla con una t y un numero que van desde el 1 a n, esto lo hago para ser ordenado, se imaginan un inner join de 15 tablas, lo máximo que he hecho es 7 y me ha servido este consejo.
- Cuando este haciendo comiencen desde atrás para delante, eso quiere decir haciendo las uniones y identificando las tablas es decir estos from t_prestamo as t1 inner join t_usuario as t2 on t1.id_usuario = t2.id_usuario inner join t_libro as t3 on t1.cod_libro = t3.cod_libro después hagan el select, es mas simple y despues haces el select eligiendo los datos de las tabla recuerden que están usando los “tn” en el ejemplo t2.nombre, eso quiere decir que estoy extrayendo el nombre de la tabla usuario utilizando el innerjoin a la tabla usuario y después requiero sacar = el nombre pero de la tabla libro o como yo la identifique t2, asi de fácil .
- Esto lo he probado en Mysql, Oracle, MS SQL-Server.
- El innerjoin solo le servirá que si ustedes están seguro que los campos estén con datos, si no tienen datos ocupen el Rigth o el Left Join que la diferencia es que tomara dependiendo el que ocupen el dato de la derecha o izquierda, pero eso deben estar seguro que tenga datos sino se saltara igualmente.
Ya lo dejo ojala que hayan entendido y que lo tomen en cuenta
Cuidense