Si aprendes como se debe hacer un INNER JOIN en tus PL-SQL Procedures en Oracle podrás unir o asociar dos o más tablas en una misma consulta SELECT para obtener los datos necesarios de cada tabla.
La cláusula INNER JOIN básicamente permite unir una tabla con otra tabla en tus PL-SQL Procedures en Oracle por un campo o llave que sea común para ambas tablas.
En Oracle para unir dos tablas se puede usar la cláusula INNER JOIN la que puede resultar muy complicada para los desarrolladores, pero esta puede ser reemplazada fácilmente por un signo igual “=” dentro la cláusula WHERE, lo que resulta mas simple de aplicar en tus PL-SQL Procedures en Oracle.
Revisemos algunos ejemplos para que entiendas mejor como se debe usar el INNER JOIN en tus PL-SQL Procedures en Oracle.
Ejemplo #1: Supone que en una consulta necesitas obtener datos de un empleado y además datos del departamento, veamos como se hace:
/* PL-SQL Procedures en Oracle */
Select
T_empleado.nombre,
T_empleado.direccion,
T_empleado.cargo,
T_departamento.codigo_dep,
T_departamento.nombre_dep
From t_empleado
INNER JOIN t_departamento ON t_empleado.id_departamento = t_departamento.id_departamento
Where t_empleado = pin_id_empleado;
En este ejemplo de PL-SQL Procedures en Oracle se esta uniendo la tabla t_empleado con la tabla t_departamento por su campo común id_departamento utilizando la cláusula INNER JOIN.
TÚ REPORTE: “Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos”
Ejemplo #2: Veamos ahora como se hace la misma consulta anterior pero utilizando el signo igual en la cláusula WHERE:
/* PL-SQL Procedures en Oracle */
Select
emp.nombre,
emp.direccion,
emp.cargo,
dep.codigo_dep,
dep.nombre_dep
From t_empleado emp, t_departamento dep
Where emp.t_empleado = pin_id_empleado
And dep.id_departamento = emp.id_departamento;
En este ejemplo se reemplaza la cláusula INNER JOIN por una condición dentro de la cláusula WHERE en tus PL-SQL Procedures en Oracle, donde se une la tabla t_empleado (emp.id_departamento) con la tabla t_departamento (dep.id_departamento) solo usando el signo igual (=).
Este último ejemplo es el método mas utilizado por los desarrolladores en la construcción de los PL-SQL Procedures en Oracle, ya que permite una rápida implementación quedando un código más entendible a diferencia de utilizar la cláusula INNER JOIN que es más larga y engorrosa de aplicar.
Te propongo que pruebes de inmediato estos ejemplos en tu Base de Datos con tus propias tablas, PL-SQL Procedures en Oracle y PL-SQL Function en Oracle, para que comiences a ejercitar la mano y aprendas a dominar esta nueva técnica en tus PL-SQL Packages en Oracle.
Estoy muy interesado en conocer tu opinión y/o comentario sobre este artículo, también cuéntame sobre qué es lo que quieres saber de PL-SQL Procedures en Oracle y/o dime cuál es tu principal frustración a la hora de trabajar con PL-SQL Procedures en Oracle. Estaré muy atento respondiendo tus preguntas y/o comentarios, gracias.
Saludos
Roberto Vicencio – Escritor del Reporte:
“Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos”
Tengo mucha expectativa en ver ya el query
Hola David, gracias por comunicarte y por tu comentario, te recomiendo aplicar de inmediato lo aprendido en tu Base de Datos, gracias.
PD: Ya obtuviste mi reporte gratuito de ‘Cómo Construir un Select Eficiente en Oracle en Solo 7 Pasos’, si aún no lo has hecho descargalo aquí:
https://dominatuspackagesen0racle.com/
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
pero en cuestion de volumen de datos cual es mas optimo
un select simple o el select con inner join.
Hola Marcos, gracias por comunicarte, excelente tu pregunta, todo depende de la información que quieres obtener y si la o las tablas estan creadas con sus primary key e indices correctos, si quieres consultar una tabla con gran volumen de datos y esta no tiene el indice adecuado, tardarás mucho tiempo en obtener los datos y eso es indiferente de si usas o no un inner join para obtener datos de una tabla asociada. Por supuesto que mientras mas tablas agregues a una consulta esta tardará mas tiempo en devolver los datos, pero si el modelo de datos se encuentra optimizado estos tiempos disminuyen considerablemente.
PD: Pronto voy a dar un seminario en vivo donde hablare de como construir un Select de múltiples tablas, te avisare por email o en mi blog para que estes atento y reserves tu cupo.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
muy buen aporte, casi no se consigue informacion de oracle en español
Hola Daniel, gracias por comunicarte y por tu comentario, seguiré escribiendo artículos y haciendo videos que sean útiles para la comunidad de dasarrolladores en Oracle, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
buenas necesito hacer un pl-sql que me valla a consultar los datos de una tabla llamada ejemplares que contiene unos valores de costo precio por tiempo costo de tiempo adicional bueno otras cosas y necesito llevar esos datos a una tabla llamada alquiler y me muestre todos los datos haciendo un calculo que me muestre el valor total gracias si me pueden ayudar les explico bien el problema gracias
Hola Cristian, gracias por comunicarte y por tu comentario, para hacer lo que necesitas debes hacer un procedimiento almacenado que consulte los datos, luego los inserte, finalmente los calcule y los muestre, algo como lo siguiente:
create procedure tu_proceso is
lin_precio number;
lin_total number;
begin
select precio into lin_precio from ejemplares;
insert into alquiler(precio) values(lin_precio);
select sum(precio) into lin_total from alquiler;
dbms_output.put_line(‘total: ‘||lin_total);
end;
PD: Ya obtuviste mi libro-reporte gratuito sobre “Como Construir un SELECT Eficiente en Oracle en Solo 7 Pasos”, si aún no lo tienes puedes obtenerlo haciendo clic en el siguiente enlace:
https://dominatuspackagesen0racle.com/
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
EXCELENTE EXPLICACION!!!
SALUDOS Y GRACIAS….
Hola Roberto,
No has respondido del todo a la pregunta: “pero en cuestion de volumen de datos cual es mas optimo”, y me parece la clave de todo esto.
En SQL Server la diferencia de rendimiento entre hacer un JOIN en el FROM y unir las tablas mediante igualdades en el WHERE es abismal, el rendimiento de los JOIN es mucho mayor, ya que el WHERE se aplica tras haber recuperado TODOS los datos de TODAS las tablas, mientras que el FROM es lo primero que se ejecuta y, si está enlazado por JOIN’s, sólo recupera los datos que cumplan esas condiciones.
¿Cómo hace esto Oracle? ¿Es lo mismo JOIN que igualar en el WHERE? ¿Cómo ejecuta la consulta?
Un saludo.
Hola Chano, gracias por comunicarte y por tu comentario, has tocado un muy buen punto, a diferencia de Sql server en Oracle el usar el Inner Join en el From o usar la igualdad en el Where en cuanto a rendimiento es exactamente lo mismo, es decir, el resultado del ejemplo #1 y #2 son lo mismo en cuestion de volumen de datos y como indico la diferencia solo esta en la escritura del Join que es mas engorrosa, gracias.
PD: Si este artículo te pareció interesante te invito a que compartas el enlace https://dominatuspackagesen0racle.com/ con las personas que creas que también les puede ser útil esta información y quedate atento a tu email porque seguiré enviándote información valiosa para tu aprendizaje.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Esta interesante , una consulta porque sale registro duplicados es decir con el mismo código si la tabla no tiene cod iguales
Hola Quique, gracias por comunicarte, si te aparecen códigos duplicados es porque estas haciendo Join con otra tabla que si tiene mas de un registro con el mismo código, es decir, si la tabla A tiene el código 01 y la tabla B tiene 2 registros con el código 01 al hacer el join se mostraran 2 registros con el código 01, gracias.
PD: Ya obtuviste mi libro-reporte sobre “Cómo Construir un SELECT Eficiente en Oracle en Solo 7 Pasos”, si aun no lo tienes puedes obtenerlo desde este enlace https://dominatuspackagesen0racle.com/
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.