2011-04-05 58 views
0

Sql不會讓我創建這些表,因爲語法錯誤可以有人幫助我。在表格幫助中找不到語法錯誤User_id!

drop table users; 
drop table intrest; 
drop table friendships; 

create table users(
id INT, 
Fname char(15), 
Lname char(15), 
email char(20), 
street char(15), 
state char(2), 
zip INT, 
age INT, 
gender char (2), 
phone INT, 
User_password char(15), 
primary key (id), 
foreign key (intrest_id) references intrest(id) 
); 

create table Intrests(
id INT, 
description char(30), 
Primary key (id), 
foreign key (users_id) references users(id) 
); 

create table User_intrest(
foreign key (users_id) references users(id), 
foreign key (intrest_id) references intrest(id) 
); 


create table friendships(
User_1_id INT, 
User_2_id INT, 
description Char(20), 
foreign key (users_id) references users(id) 
); 
+0

您能粘貼確切的錯誤和您的完整會話嗎? – 2011-04-05 18:41:25

回答

1
create table Intrests(id INT, description char(30), 
         Primary key (id), 
         foreign key (users_id) references users(id)); 

create table User_intrest(foreign key (users_id) references users(id), 
          foreign key (intrest_id) references intrest(id)); 

對於利益表,其中列users_id定義? user_interest表的列定義?

1

你有一個週期性的FK關係:

Users具有Interests(id)作爲FK,並Interestsuser(id)爲FK。

你不需要或者其中任何一個這些因爲你有一個user_intrest表來鏈接它們!

也有幾個錯別字與表的名稱,如intrestsintrest

此外,你應該在Friendships雙方你User領域是FK到Users,我不知道爲什麼你想要第三個,無關Users_Id場。

1

第一你有語法錯誤(許多)是

create table users(
... 
primary key (id), 
foreign key (intrest_id) references intrest(id) <--- there is no table intrest 
); 

我建議:

STOP!不要只是複製粘貼。試試看看爲什麼MySQL給你提供錯誤信息:Key column 'intrest_id' doesn't exist in table,是不是你得到的錯誤?

首先嚐試修復錯誤。你需要做什麼?添加intrest_id場表users,不只是聲明爲FOREIGN KEY。 (最終這不是一個有用的領域,但無論如何都要這樣做)。

然後重新運行查詢並嘗試修復下一個錯誤。逐個。如果你真的得到的地方卡住了,好了,你知道一個網站的提問:)

所以,試圖通過一個修正錯誤之一,直到您有沒有任何錯誤,運行在所有的腳本。你將學到的不僅僅是複製和粘貼任何答案。

CREATE TABLE Users(
    id INT, 
    Fname char(15), 
    Lname char(15), 
    email char(50),    <-- 20 is too small for emails 
    street char(15), 
    state char(2), 
    zip INT, 
    age INT, 
    gender char (2), 
    phone char(20),    <-- phone should be char, not INT 
    user_password char(15), 
PRIMARY KEY (id) 
);      <-- You don't really need a foreign key to Interests, 
         <-- that's why you have the User_interest "middle" table 

CREATE TABLE Interests(
    id INT, 
    description char(30), 
PRIMARY KEY (id)    
);       <-- You don't really need a foreign key to Users, 
          <-- for the same reasons. 

CREATE TABLE User_interest(
    user_id INT,         <-- These foreign keys are 
    interest_id INT,        <-- good, but you need to 
               <-- declare them as fields, too 
PRIMARY KEY (user_id, interest_id),   <-- It's good if all tables have PK 
FOREIGN KEY (user_id) REFERENCES Users(id), 
FOREIGN KEY (interest_id) REFERENCES Interests(id) 
); 

CREATE TABLE Friendships(
    user_1_id INT, 
    user_2_id INT, 
    description char(20), 
PRIMARY KEY (user_1_id, user_2_id), 
FOREIGN KEY (user_1_id) REFERENCES Users(id), 
FOREIGN KEY (user_2_id) REFERENCES Users(id) 
); 
+0

+1「很多」......非常真實! – JNK 2011-04-05 19:20:27

+0

如果我能修正版本,我會+2。 – JNK 2011-04-05 19:31:31

+0

@JNK:thnx。但我也犯了錯誤。這是第二個錯誤。首先是「在表用戶中沒有名爲intrest_id的字段」。他似乎認爲宣佈一個外鍵,也宣佈了一個字段。 – 2011-04-05 20:09:30