2010-07-09 20 views
0

我在做什么错了?我需要创建外键,但CONSTRAINT开头的代码在某种程度上是错误的,同样我需要帮助我的观点我认为如果子查询错了,你能帮助我吗?简单的外键/创建查看问题

CREATE TABLE dealer(
dealershipId CHAR(10), 
phone CHAR(10), 
dealershipName CHAR(10), 
webAddress char (10), 
street CHAR (10), 
city char (10), 
zip char (5), 
mCapacity INT, 
managerFName CHAR (10), 
managerLName CHAR (10), 
PRIMARY KEY (dealershipId)); 

CREATE TABLE automobiles(
autoId CHAR (4), 
vehiclecode VARCHAR (15), 
manufacturer VARCHAR(15), 
model VARCHAR (20), 
style VARCHAR (5), 
color VARCHAR (10), 
ownership VARCHAR (8), 
PRIMARY KEY (autoId) 
CONSTRAINT fkHasRep FOREIGN KEY (dealershipId) 
REFERENCE dealer(dealershipId) ON DELETE RESTRICT 
); 

--7. 
CREATE VIEW division AS 
SELECT dealershipName, webAddress, phone 
FROM dealer 
WHERE dealershipId IN 
(SELECT manufacturer, model, style, ownership 
FROM automobiles); 

--8. 
SELECT phone, manufacturer, model 
FROM division; 

回答

1

你错过主KED &外键之间的逗号:

CREATE TABLE automobiles(
autoId CHAR (4), 
vehiclecode VARCHAR (15), 
manufacturer VARCHAR(15), 
model VARCHAR (20), 
style VARCHAR (5), 
color VARCHAR (10), 
ownership VARCHAR (8), 
PRIMARY KEY (autoId), 
CONSTRAINT fkHasRep FOREIGN KEY (dealershipId) 
REFERENCE dealer(dealershipId) ON DELETE RESTRICT 
); 

MySQL的观点不允许在视图子查询(错误#1349) - 在restrictions are documented here。因此,将其转换为使用代替连接:

CREATE VIEW division AS 
    SELECT d.dealershipName, d.webAddress, d.phone, a.* 
    FROM DEALER d 
    JOIN AUTOMOBILES a ON d.dealershipid IN (a.manufacturer, 
               a.model, 
               a.style, 
               a.ownership); 
+0

谢谢零件已修复,我也在汽车表中缺少经销商ID。现在你能帮助我看看吗? – 2010-07-09 20:09:26

+0

@Michael Quiles:查看更新 – 2010-07-09 20:14:28

+0

,它不起作用,它只会从经销商表中提取数据,而不会添加汽车表格。 – 2010-07-09 20:24:47

1

我的猜测是,您的汽车表上没有经销商标识。

而且,您的视图不会起作用,因为您只能在嵌套选择查询中包含一个字段。你也可以重写那个以使用INNER或OUTER JOIN。

+0

这是我应该做的使用子查询我相信我们在课堂上取得了类似的东西,但没有进一步解释。 7.创建包含所选模型中两个表格的字段的VIEW – 2010-07-09 20:02:12

1

默认的Myisam引擎不支持外键。 在CREATE TABLE语句中指定Innodb引擎。

CREATE TABLE dealer(
dealershipId CHAR(10), 
phone CHAR(10), 
dealershipName CHAR(10), 
webAddress char (10), 
street CHAR (10), 
city char (10), 
zip char (5), 
mCapacity INT, 
managerFName CHAR (10), 
managerLName CHAR (10), 
PRIMARY KEY (dealershipId)) ENGINE = Innodb;