Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Ayuda con Base de Datos

Estas en el tema de Ayuda con Base de Datos en el foro de Bases de Datos General en Foros del Web. Hola amigos, se que es una pregunta muy simple y talves algo tonta, pero recien estoy aprendiendo sobre esto. Aqui les dejo mi problema: estoy ...
  #1 (permalink)  
Antiguo 06/12/2009, 18:34
Avatar de buscador18  
Fecha de Ingreso: septiembre-2009
Mensajes: 146
Antigüedad: 14 años, 7 meses
Puntos: 2
Ayuda con Base de Datos

Hola amigos, se que es una pregunta muy simple y talves algo tonta, pero recien estoy aprendiendo sobre esto.
Aqui les dejo mi problema: estoy creando una base de datos con dos tablas, ambas debo relacionarlas por el campo IdCategoria ahi es donde estoy pataleando ya que no puedo crear la relacion, a ver si me pueden ayudar:

Cita:
CREATE DATABASE IF NOT EXISTS ferreteria;
USE ferreteria;

DROP TABLE IF EXISTS categorias;
DROP TABLE IF EXISTS productos;

CREATE TABLE categoria (
IdCategoria VARCHAR(5) NOT NULL,
NombreCategoria VARCHAR(50) NOT NULL,
Descripcion VARCHAR(100) NOT NULL,
CONSTRAINT pk_categoria PRIMARY KEY (IdCategoria)
) TYPE=INNODB;

CREATE TABLE producto(
IdCategoria VARCHAR(5) NOT NULL,
IdProducto CHAR(5) NOT NULL,
NombreProducto VARCHAR(50) NOT NULL,
CantidadPorUnidad VARCHAR(30) NOT NULL,
PrecioUnidad DECIMAL(8,2) NOT NULL,
UnidadesEnExistencia INT NOT NULL,
CONSTRAINT pk_producto PRIMARY KEY (IdProducto),
KEY idx_producto01(IdCategoria),
CONSTRAINT fk_producto_categoria FOREIGN KEY (IdCategoria)
REFERENCES categoria(IdCategoria)
ON DELETE RESTRICT
ON UPDATE RESTRICT
) TYPE=INNODB;



INSERT INTO categoria (IdCategoria,NombreCategoria,Descripcion) VALUES
('C0001','Electricidad','Cables, Tomacorrientes, Enchufes, etc.'),
('C0002','Gasfiteria','Tubos, Accesorios, Caños, etc.'),
('C0003','Construccion','Cemento, Yeso, Fierros, etc.'),
('C0004','Pintura','Pintura, Pintura Lavable, Tiner, etc.');


INSERT INTO producto (IdProducto,NombreProducto,CantidadPorUnidad,Preci oUnidad,UnidadesEnExistencia) VALUES
('C0001','P0001','Cable Mellizo','Metro','0.90','2000'),
('C0001','P0002','Cinta Aislante','Unidad', '2.00','120'),
('C0001','P0003','Tomacorriente','Unidad','1.30',' 90'),
('C0002','P0004','Caño premium','Unidad','7.00','80'),
('C0002','P0005','Teflon','Unidad','3.00','64'),
('C0002','P0006','codos','Unidad','1.20','87'),
('C0003','P0007','Cemento','Bolsa','28.00','90'),
('C0003','P0008','Yeso','Bolsa','5.00','60'),
('C0003','P0009','Fierro 1/2 pulg','Metros','5.00','1500'),
('C0004','P0010','Pintura Lavable','Balde','5.00','60'),
('C0004','P0011','Brochas','Unidad','1.50','43'),
('C0004','P0012','Tiner','Galones','1.20','60');
Alguien que me ayude y que me corrija la falla, se le agradece la respuesta.
  #2 (permalink)  
Antiguo 06/12/2009, 19:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Ayuda con Base de Datos

Tienes dos problemas:
1) la clausula TYPE es obsoleta. Actualmente corresponde poner ENGINE.
2) La creación de las tablas funciona correctamente. No tienen problemas ni de estructura ni de relaciones. Tu problema es que no estás listando el campo IdCategoria entre los campos que vas a ingresar, pero estás incluyendo el valor, por lo que el error devuelto es "Cantidad de columnas incorrecto".
La sentencia de inserción debería ser:
Código sql:
Ver original
  1. INSERT INTO producto (IdCategoria, IdProducto, NombreProducto, CantidadPorUnidad,
  2.     PrecioUnidad, UnidadesEnExistencia)
  3. VALUES ('C0001', 'P0001', 'Cable Mellizo', 'Metro', '0.90', '2000'),
  4.    ('C0001', 'P0002', 'Cinta Aislante', 'Unidad',  '2.00', '120'),
  5.    ('C0001', 'P0003', 'Tomacorriente', 'Unidad', '1.30','  90'),
  6.    ('C0002', 'P0004', 'Caño premium', 'Unidad', '7.00', '80'),
  7.    ('C0002', 'P0005', 'Teflon', 'Unidad', '3.00', '64'),
  8.    ('C0002', 'P0006', 'codos', 'Unidad', '1.20', '87'),
  9.    ('C0003', 'P0007', 'Cemento', 'Bolsa', '28.00', '90'),
  10.    ('C0003', 'P0008', 'Yeso', 'Bolsa', '5.00', '60'),
  11.    ('C0003', 'P0009', 'Fierro 1/2 pulg', 'Metros', '5.00', '1500'),
  12.    ('C0004', 'P0010', 'Pintura Lavable','Balde', '5.00', '60'),
  13.    ('C0004', 'P0011', 'Brochas', 'Unidad', '1.50', '43'),
  14.    ('C0004', 'P0012', 'Tiner', 'Galones', '1.20', '60');

Habría algunos cuantos consejos más referidos a estructuras de datos y análisis, pero esos pueden verse después.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 10/12/2009, 10:44
Avatar de buscador18  
Fecha de Ingreso: septiembre-2009
Mensajes: 146
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Ayuda con Base de Datos

Muchas gracias ahora si ya se soluciono mi problema, tan facil que estaba el asunto.
Se agracede
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:44.