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

[SOLUCIONADO] Problema al relacionar tablas SQL Server

Estas en el tema de Problema al relacionar tablas SQL Server en el foro de SQL Server en Foros del Web. Quiero relacionar estas tablas y no me deja SQL @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE TABLE proveedores (      proveedor_id INT PRIMARY KEY ...
  #1 (permalink)  
Antiguo 01/11/2013, 14:25
 
Fecha de Ingreso: julio-2010
Mensajes: 191
Antigüedad: 14 años, 4 meses
Puntos: 2
Problema al relacionar tablas SQL Server

Quiero relacionar estas tablas y no me deja SQL

Código SQL:
Ver original
  1. CREATE TABLE proveedores
  2. (  
  3.    proveedor_id INT PRIMARY KEY,
  4.    proveedor_nombre VARCHAR (50) NOT NULL,
  5.    proveedor_email VARCHAR(60),
  6.    proveeedor_telefono VARCHAR (10) NOT NULL
  7.    
  8. )
  9.  
  10. CREATE TABLE productos
  11. (
  12.   producto_id INT PRIMARY KEY,
  13.   producto_nombre VARCHAR(255) NOT NULL,
  14.   producto_precio money NOT NULL,
  15.   producto_proveedor INT
  16.  
  17.  CONSTRAINT Proveedor_Productos FOREIGN KEY (producto_proveedor)
  18.  REFERENCES proveedores (proveedor_id)
  19.  )
  20.  
  21. CREATE TABLE detallefactura
  22. (
  23.    factura_id INT,
  24.    producto_id INT,
  25.    producto_cantidad INT NOT NULL,
  26.    producto_precio money NOT NULL,
  27.    PRIMARY KEY(factura_id, producto_id)
  28.    
  29.    CONSTRAINT Detalle_Producto FOREIGN KEY (producto_id)
  30.     REFERENCES productos(producto_id)
  31.   )


Quiero relacionar la tabla producto con la tabla detalle y me sale error

este es el diagrama
  #2 (permalink)  
Antiguo 01/11/2013, 14:35
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Problema al relacionar tablas SQL Server

y porque no te deja, que error te manda??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 01/11/2013, 14:42
 
Fecha de Ingreso: julio-2010
Mensajes: 191
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Problema al relacionar tablas SQL Server

Sintaxis error de la palabra clave CONSTRAINT
  #4 (permalink)  
Antiguo 01/11/2013, 14:44
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Problema al relacionar tablas SQL Server

Código SQL:
Ver original
  1. CREATE TABLE proveedores
  2. (  
  3.    proveedor_id INT PRIMARY KEY,
  4.    proveedor_nombre VARCHAR (50) NOT NULL,
  5.    proveedor_email VARCHAR(60),
  6.    proveeedor_telefono VARCHAR (10) NOT NULL
  7.    
  8. )
  9.  
  10. CREATE TABLE productos
  11. (
  12.   producto_id INT PRIMARY KEY,
  13.   producto_nombre VARCHAR(255) NOT NULL,
  14.   producto_precio money NOT NULL,
  15.   producto_proveedor INT,
  16.  
  17.  CONSTRAINT [Proveedor_Productos] FOREIGN KEY (producto_proveedor)
  18.  REFERENCES proveedores (proveedor_id)
  19.  )
  20.  
  21. CREATE TABLE detallefactura
  22. (
  23.    factura_id INT,
  24.    producto_id INT,
  25.    producto_cantidad INT NOT NULL,
  26.    producto_precio money NOT NULL,
  27.    PRIMARY KEY(factura_id, producto_id),
  28.    
  29.    CONSTRAINT [Detalle_Producto] FOREIGN KEY (producto_id)
  30.     REFERENCES productos(producto_id)
  31.   )

Prueba con esto :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 01/11/2013, 14:49
 
Fecha de Ingreso: julio-2010
Mensajes: 191
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Problema al relacionar tablas SQL Server

si el unico cambio es los corchetes, el error sigue igual.

Pensando un poco cuando pongo esto:
CONSTRAINT [Detalle_Producto] FOREIGN KEY (producto_id)

estoy diciendo que la FOREIGN KEY es producto_id

pero antes de eso estoy poniendo estas llaves primarias

PRIMARY KEY(factura_id, producto_id)

producto_id ya esta como llave primaria, no se si esto tenga que ver
  #6 (permalink)  
Antiguo 01/11/2013, 15:07
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Problema al relacionar tablas SQL Server

no no es el unico cambio, es la "coma" antes de la declaracion del constraint, investiga un poco de la sintaxis de un create table con constraints, si el error fuera de que no te deja hacer la relacion el mensaje seria diferente. o prueba con lo siguiente:

Código SQL:
Ver original
  1. CREATE TABLE productos
  2. (
  3.   producto_id INT PRIMARY KEY,
  4.   producto_nombre VARCHAR(255) NOT NULL,
  5.   producto_precio money NOT NULL,
  6.   producto_proveedor INT
  7. )
  8.  
  9. ALTER TABLE [dbo].[productos]  WITH CHECK ADD  CONSTRAINT [Proveedor_Productos] FOREIGN KEY(producto_proveedor)
  10. REFERENCES [dbo].[proveedores] (proveedor_id)

Otra cosa las relaciones foraneas en sql server se hacen con las llaves primarias asi que te recomendaria incluir la columna producto_proveedor a la llave primaria :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 01/11/2013 a las 15:15
  #7 (permalink)  
Antiguo 01/11/2013, 15:22
 
Fecha de Ingreso: julio-2010
Mensajes: 191
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Problema al relacionar tablas SQL Server

Gracias, ya he solucionado mi problema
  #8 (permalink)  
Antiguo 01/11/2013, 15:23
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Problema al relacionar tablas SQL Server

__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: relacionar, server, sql, tabla, tablas
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 18:50.