SQL> @&1 SQL> /* @pregBD_Piezas.sql */ SQL> SET ECHO ON SQL> SQL> /* mostrar los valores NULL como '' (SQLPLUS) SQL> */ SQL> SET NULL '' SQL> SQL> /* especificar los formatos de algunas columnas (SQLPLUS) SQL> */ SQL> column nombre format a20; SQL> column Pieza format a16; SQL> column color format a12; SQL> SQL> /* indicar que si no cabe en la columna, trunque el valor (SQLPLUS) SQL> */ SQL> SET WRAP OFF SQL> SQL> /* clave y nombre de los proveedores que suministran piezas, junto con las piezas que suministran SQL> */ SQL> SELECT V.clvProv "id.", nombProv "nombre", P.clvPieza "ref.", nombPieza "Pieza", color 2 FROM Proveedor V, Suministrar S, Pieza P 3 WHERE V.clvProv = S.clvProv AND S.clvPieza = P.clvPieza; id. nombre ref. Pieza COLOR ---------- -------------------- ---------- ---------------- ------------ 1 PEREZ 91 TUERCA ROJO 1 PEREZ 92 TUERCA VERDE 2 LOPEZ 92 TUERCA VERDE 2 LOPEZ 93 TORNILLO AZUL 2 LOPEZ 94 TORNILLO ROJO 1 PEREZ 95 TUERCA AZUL 6 filas seleccionadas. SQL> SQL> SELECT clvProv "id.", nombProv "nombre", clvPieza "ref.", nombPieza "Pieza", color 2 FROM Proveedor V NATURAL JOIN Suministrar S NATURAL JOIN Pieza P; id. nombre ref. Pieza COLOR ---------- -------------------- ---------- ---------------- ------------ 1 PEREZ 91 TUERCA ROJO 1 PEREZ 92 TUERCA VERDE 2 LOPEZ 92 TUERCA VERDE 2 LOPEZ 93 TORNILLO AZUL 2 LOPEZ 94 TORNILLO ROJO 1 PEREZ 95 TUERCA AZUL 6 filas seleccionadas. SQL> SQL> /* especificar los formatos de las columnas (SQLPLUS) SQL> */ SQL> column nombPieza heading "Pieza" format a16; SQL> column nombProv heading "Vendedor" format a16; SQL> column clvProv heading "ID" format 999; SQL> column clvPieza heading "ref." format 999; SQL> SQL> /* clave y nombre de los proveedores, junto con las piezas que suministran SQL> */ SQL> SELECT V.clvProv "id.", nombProv "nombre", P.clvPieza "ref.", nombPieza "Pieza", color 2 FROM Proveedor V, Suministrar S, Pieza P 3 WHERE V.clvProv = S.clvProv (+) AND S.clvPieza = P.clvPieza (+); id. nombre ref. Pieza COLOR ---------- -------------------- ---------- ---------------- ------------ 1 PEREZ 91 TUERCA ROJO 1 PEREZ 92 TUERCA VERDE 1 PEREZ 95 TUERCA AZUL 2 LOPEZ 92 TUERCA VERDE 2 LOPEZ 93 TORNILLO AZUL 2 LOPEZ 94 TORNILLO ROJO 3 MARTINEZ 7 filas seleccionadas. SQL> SQL> /* clave y nombre de los proveedores, junto con las piezas que suministran SQL> */ SQL> SELECT V.clvProv, nombProv, P.clvPieza, nombPieza, color 2 FROM Proveedor V, Suministrar S, Pieza P 3 WHERE V.clvProv = S.clvProv AND S.clvPieza = P.clvPieza 4 UNION 5 SELECT clvProv, nombProv, TO_NUMBER(NULL), NULL, NULL 6 FROM Proveedor 7 WHERE clvProv NOT IN (SELECT clvProv FROM Suministrar); ID Vendedor ref. Pieza COLOR ---- ---------------- ---- ---------------- ------------ 1 PEREZ 91 TUERCA ROJO 1 PEREZ 92 TUERCA VERDE 1 PEREZ 95 TUERCA AZUL 2 LOPEZ 92 TUERCA VERDE 2 LOPEZ 93 TORNILLO AZUL 2 LOPEZ 94 TORNILLO ROJO 3 MARTINEZ 7 filas seleccionadas. SQL> SQL> SELECT clvProv "id.", nombProv "nombre", clvPieza "ref.", nombPieza "Pieza", color 2 FROM Proveedor V NATURAL LEFT OUTER JOIN (Suministrar S NATURAL JOIN Pieza P); id. nombre ref. Pieza COLOR ---------- -------------------- ---------- ---------------- ------------ 1 PEREZ 91 TUERCA ROJO 2 LOPEZ 92 TUERCA VERDE 1 PEREZ 92 TUERCA VERDE 2 LOPEZ 93 TORNILLO AZUL 2 LOPEZ 94 TORNILLO ROJO 1 PEREZ 95 TUERCA AZUL 3 MARTINEZ 7 filas seleccionadas. SQL> SQL> /* no es correcto */ SQL> SELECT clvProv "id.", nombProv "nombre", clvPieza "ref.", nombPieza "Pieza", color 2 FROM Proveedor V NATURAL LEFT OUTER JOIN Suministrar S NATURAL JOIN Pieza P; id. nombre ref. Pieza COLOR ---------- -------------------- ---------- ---------------- ------------ 1 PEREZ 91 TUERCA ROJO 2 LOPEZ 92 TUERCA VERDE 1 PEREZ 92 TUERCA VERDE 2 LOPEZ 93 TORNILLO AZUL 2 LOPEZ 94 TORNILLO ROJO 1 PEREZ 95 TUERCA AZUL 6 filas seleccionadas. SQL> SQL> SELECT * FROM Pieza; ref. Pieza COLOR ---- ---------------- ------------ 91 TUERCA ROJO 92 TUERCA VERDE 93 TORNILLO AZUL 94 TORNILLO ROJO 95 TUERCA AZUL 96 PALANCA 97 TUBO GRIS 77 paño amarillo 78 formón gris 9 filas seleccionadas. SQL> set echo off fin de la ejecucion de K:\BD_2017\desarrollo\pruebas_ORACLE\BD_Piezas_nw\pregBD_Piezas_JOIN.sql