/* @pregBD_Piezas.sql */
SET ECHO ON

/* mostrar los valores NULL como '' (SQLPLUS)
*/
SET NULL ''

/* especificar los formatos de algunas columnas (SQLPLUS)
*/
column nombre                                    format a20;
column Pieza                                     format a16;
column color                                     format a12;

/* indicar que si no cabe en la columna, trunque el valor (SQLPLUS)
*/
SET WRAP OFF

/* clave y nombre de los proveedores que suministran piezas, junto con las piezas que suministran 
*/
SELECT V.clvProv "id.", nombProv "nombre", P.clvPieza "ref.", nombPieza "Pieza", color
FROM   Proveedor V, Suministrar S, Pieza P
WHERE  V.clvProv = S.clvProv AND S.clvPieza = P.clvPieza;

SELECT clvProv "id.", nombProv "nombre", clvPieza "ref.", nombPieza "Pieza", color
FROM   Proveedor V NATURAL JOIN Suministrar S NATURAL JOIN Pieza P;

/* especificar los formatos de las columnas (SQLPLUS)
*/
column nombPieza         heading "Pieza"         format a16;
column nombProv          heading "Vendedor"      format a16;
column clvProv           heading "ID"            format 999;
column clvPieza          heading "ref."          format 999;

/* clave y nombre de los proveedores, junto con las piezas que suministran 
*/
SELECT V.clvProv "id.", nombProv "nombre", P.clvPieza "ref.", nombPieza "Pieza", color
FROM   Proveedor V, Suministrar S, Pieza P
WHERE  V.clvProv = S.clvProv (+) AND S.clvPieza = P.clvPieza (+);

/* clave y nombre de los proveedores, junto con las piezas que suministran 
*/
SELECT V.clvProv, nombProv, P.clvPieza, nombPieza, color
FROM   Proveedor V, Suministrar S, Pieza P
WHERE  V.clvProv = S.clvProv AND S.clvPieza = P.clvPieza
UNION
SELECT clvProv, nombProv, TO_NUMBER(NULL), NULL, NULL
FROM   Proveedor
WHERE  clvProv NOT IN (SELECT clvProv FROM Suministrar);

SELECT clvProv "id.", nombProv "nombre", clvPieza "ref.", nombPieza "Pieza", color
FROM   Proveedor V NATURAL LEFT OUTER JOIN (Suministrar S NATURAL JOIN Pieza P);

/* no es correcto */
SELECT clvProv "id.", nombProv "nombre", clvPieza "ref.", nombPieza "Pieza", color
FROM   Proveedor V NATURAL LEFT OUTER JOIN Suministrar S NATURAL JOIN Pieza P;

SELECT * FROM Pieza;
