Hola a todos tengo unas consultas...
quiero saber si estas query se encuentran bien...
y los scrips de las tablas se encuentran abajo pero al parecer tengo malo el scrips de la tabla suministra en la parte de las foreign key, ya que al ingresar
datos no toma als foreign key :S y por eso no puedo revisar si estan bien los ejercicios...
espero que me puedan ayudar.
--------------------------------------
ARTICULOS
CodArt nvarchar(4) (PK)
Nombre Nvarchar (50)
PrecVenta Int
Procede Nvarchar (50)
------------------------------------
SUMINISTRA
CodArt nvarchar(4) (FK)
CodPro nvarchar(4) (FK)
Precio Int
---------------------------------------
PROVEEDORES
CodPro nvarchar(4) (PK)
Nombre Nvarchar (50)
Comuna Nvarchar (50)
--------------------------------------
1. Obtener los nombres de todas los artículos que son suministrados por proveedores de ‘Santiago’ y son de procedencia china (Nombre)
SELECT a.nombre
FROM artículos a INNER JOIN suministra s ON a.codArt=s.codArt
INNER JOIN proveedores p ON s.codPro=p.codPro
WHERE p.comuna=’Santiago’ AND a.procede=’china’
2. Obtener todos los datos de todos los proveedores que sean de la comuna de “providencia” y que suministran artículos por un precio mayor a 6000 pesos. (Codigo, Nombre, Comuna)
SELECT p.*
FROM artículos a INNER JOIN suministra s ON a.codArt=s.codArt
INNER JOIN proveedores p ON s.codPro=p.codPro
WHERE p.comuna=’providencia’ AND a.precVenta>6000
3. Obtener el promedio al que se suministran los artículos del proveedor “HomeroCenter”. (Promedio de precios)
SELECT avg(s.precio)
FROM suministra a INNER JOIN proveedores p ON s.CodPro=p.CodPro
WHERE p.Nombre=’HomeroCenter’
4. Obtener los nombres de los proveedores que suministran el artículo “Martillo” y a que precio lo suministran. (nombre proveedor, precio)
SELECT p.Nombre, s.Precio
FROM proveedor p INNER JOIN suministra s ON p.CodPro=s.CodPro
INNER JOIN artículos a ON s.CodArt=a.CodArt
WHERE a.Nombre=’martillo’
5. Obtener los nombres de los artículos suministradas por el proveedor “HomeroCenter”. (Nombre articulo)
SELECT a.Nombre
FROM artículos a INNER JOIN suministro s ON a.CodArt=s.CodArt
INNER JOIN proveedores p ON s.CodPro=p.CodPro
WHERE p.Nombre=’HomeroCenter’
6. Obtener el nombre del proveedor que suministra el artículo más caro, indicando el nombre y el precio al que la suministran. (Nombre Proveedor, Nombre articulo, Precio)
SELECT p.nombre, a.nombre, MAX(s.precio)
FROM proveedores p INNER JOIN suministra s ON p.CodPro=s.CodPro
INNER JOIN articulos a ON s.CodArt=a.CodArt
7. Mostrar el promedio de precios de venta de los artículos por procedencia del artículo. (Procedencia, Promedio)
SELECT Procede, avg(PrecVenta)
FROM artículos
GROUP BY Procede
8. Mostrar el nombre de los productos que son más caros que el promedio de todos los productos de procedencia “Alemana”. (Nombre producto)
SELECT nombre
FROM articulos
WHERE procede = ‘alemania' and precventa>( select avg(precventa)
from articulos )
9. Agregar a la base de datos la Empresa “Lidera” (código P2), de Santiago que empezará suministrando tuercas (código A10) a 160 pesos cada tuerca.
INSERT INTO proveedores VALUES(‘p2’,’lidera’,’santiago’);
INSERT INTO suministra VALUES(‘a10’,’p2’,160);
10. Aumentar los precios de venta en un 10% permanente a los productos que son de procedencia “alemana”.
SELECT (precio)*1.10
FROM artículos
WHERE procede=’alemania’
11. La empresa proveedora “Marcus S.A.” (código P3) de arica, no va seguir suministrando ninguna pieza (aunque la empresa en si va a seguir perteneciendo al los proveedores de la base de datos).
detele
FROM suministra
WHERE codpro='p3'
y estas son las tablas para oracle
(esta tiene problema...)
CREATE TABLE Suministra (
codart VARCHAR(4) NOT NULL,
codpro VARCHAR(4) NOT NULL,
precio INTEGER NOT NULL,
FOREIGN KEY (codart) REFERENCES articulos(codart),
FOREIGN KEY (codpro) REFERENCES proveedores(codpro)
);
CREATE TABLE Proveedores (
CodPro VARCHAR(4) NOT NULL,
Nombre VARCHAR(20) NOT NULL,
Comuna VARCHAR(20) NOT NULL,
PRIMARY KEY (CodPro)
);
CREATE TABLE Articulos (
CodArt VARCHAR(4) NOT NULL,
Nombre VARCHAR(20) NOT NULL,
PrecVenta INTEGER NOT NULL,
Procede VARCHAR(50) NOT NULL,
PRIMARY KEY (CodArt)
);