SoloCodigo

Bases de Datos => Oracle => Mensaje iniciado por: el_funa en Viernes 28 de Mayo de 2010, 08:17

Título: problema con query y tabla foreign key
Publicado por: el_funa en Viernes 28 de Mayo de 2010, 08:17
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)
Código: SQL
  1.  
  2. SELECT a.nombre
  3. FROM artículos a INNER JOIN suministra s ON a.codArt=s.codArt
  4.           INNER JOIN proveedores p ON s.codPro=p.codPro
  5. WHERE p.comuna=’Santiago’ AND a.procede=’china’
  6.  
  7.  
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)

Código: SQL
  1.  
  2. SELECT p.*
  3. FROM artículos a INNER JOIN suministra s ON a.codArt=s.codArt
  4.           INNER JOIN proveedores p ON s.codPro=p.codPro
  5. WHERE p.comuna=’providencia’ AND a.precVenta>6000
  6.  
  7.  

3.   Obtener el promedio al que se suministran los artículos del proveedor “HomeroCenter”. (Promedio de precios)
Código: SQL
  1.  
  2. SELECT avg(s.precio)
  3. FROM suministra a INNER JOIN proveedores p ON s.CodPro=p.CodPro
  4. WHERE p.Nombre=’HomeroCenter’
  5.  
  6.  

4.   Obtener los nombres de los proveedores que suministran el artículo “Martillo” y a que precio lo suministran. (nombre proveedor, precio)
Código: SQL
  1.  
  2. SELECT p.Nombre, s.Precio
  3. FROM proveedor p INNER JOIN suministra s ON p.CodPro=s.CodPro
  4.     INNER JOIN artículos a ON s.CodArt=a.CodArt
  5. WHERE a.Nombre=’martillo’
  6.  
  7.  

5.   Obtener los nombres de los artículos  suministradas por el proveedor “HomeroCenter”.  (Nombre articulo)
Código: SQL
  1.  
  2. SELECT a.Nombre
  3. FROM artículos a INNER JOIN suministro s ON a.CodArt=s.CodArt
  4.         INNER JOIN proveedores p ON s.CodPro=p.CodPro
  5. WHERE p.Nombre=’HomeroCenter’
  6.  
  7.  

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)
Código: SQL
  1.  
  2. SELECT  p.nombre, a.nombre, MAX(s.precio)
  3. FROM proveedores p INNER JOIN suministra s ON p.CodPro=s.CodPro
  4.                 INNER JOIN articulos a ON s.CodArt=a.CodArt
  5.  
  6.  

7.   Mostrar el promedio de precios de venta  de los artículos por procedencia del artículo. (Procedencia, Promedio)
Código: SQL
  1.  
  2. SELECT Procede, avg(PrecVenta)
  3. FROM artículos
  4. GROUP BY Procede
  5.  
  6.  
8.   Mostrar el nombre de los productos que son más caros que el promedio de todos los productos de procedencia “Alemana”. (Nombre producto)
Código: SQL
  1.  
  2. SELECT nombre
  3. FROM articulos
  4. WHERE procede = ‘alemania' and precventa>( select avg(precventa)
  5.                                  from articulos )
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
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.
Código: SQL
  1.  
  2. INSERT INTO proveedores VALUES(‘p2’,’lidera’,’santiago’);
  3. INSERT INTO suministra VALUES(‘a10’,’p2’,160);
  4.  
  5.  

10.   Aumentar los precios de venta en un 10% permanente a los productos que son de procedencia “alemana”.
Código: SQL
  1.  
  2. SELECT (precio)*1.10
  3. FROM artículos
  4. WHERE procede=’alemania’
  5.  
  6.  

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).
Código: SQL
  1.  
  2. detele
  3. FROM suministra
  4. WHERE codpro='p3'
  5.  
  6.  

y estas  son las tablas para oracle

Código: SQL
  1.  
  2.  (esta tiene problema...)
  3. CREATE TABLE Suministra (
  4.   codart VARCHAR(4) NOT NULL,
  5.   codpro VARCHAR(4) NOT NULL,
  6.   precio INTEGER NOT NULL,
  7.   FOREIGN KEY (codart) REFERENCES articulos(codart),
  8.   FOREIGN KEY (codpro) REFERENCES proveedores(codpro)
  9. );
  10.  
  11.  
  12. CREATE TABLE Proveedores (
  13.   CodPro VARCHAR(4) NOT NULL,
  14.   Nombre VARCHAR(20) NOT NULL,
  15.   Comuna VARCHAR(20) NOT NULL,
  16.   PRIMARY KEY (CodPro)
  17. );
  18.  
  19. CREATE TABLE Articulos (
  20.   CodArt VARCHAR(4) NOT NULL,
  21.   Nombre VARCHAR(20) NOT NULL,
  22.   PrecVenta INTEGER NOT NULL,
  23.   Procede VARCHAR(50) NOT NULL,
  24.   PRIMARY KEY (CodArt)
  25. );
  26.  
  27.  
  28.