我有兩個表,當我試圖連接兩個列時,它說>>> "ERROR: there is no unique constraint matching given keys for referenced table" 。
第一個表:
CREATE TABLE store(
課程文本。
名字文本。
姓氏文本。
phone_number varchar varchar
id INT PRIMARY KEY
);
第二個表:
CREATE TABLE factory_production(
student_course text,
school_name,
id INT PRIMARY KEY
);
因此,我想在課程和student_course之間連接兩列。 能否請你幫助我如何做呢?
uj5u.com熱心網友回復:
關于你的問題,有幾件事使它更難回答。
你的問題有幾處使你更難回答。
CREATE TABLE命令的語法是無效的(school_name缺少一個型別)然而,基于列的命名,我將調整你的CREATE TABLE陳述句,看起來像這樣:
CREATE TABLE courses (
course_name text,
school_name text,
id INT PRIMARY KEY
);
創建 TABLE students (
課程文本。
name text,
姓氏文本。
phone_number varchar,
id INT PRIMARY KEY
);
然而,仍有一件事需要讓你的表模式排成一排。通常情況下,你不會在你的students表中包含course列。相反,你會通過一個ID列的連接在兩者之間進行參考。
CREATE TABLE courses (
course_name text,
school_name text,
id INT PRIMARY KEY
);
創建 TABLE students (
course_id int,
名字文本。
姓氏文本。
phone_number varchar,
id INT PRIMARY KEY
);
現在你可以通過一個JOIN命令來 "連接 "這兩個表。類似于:
SELECT *
FROM students
LEFT JOIN courses ON students.course_id = courses.id
你應該得到一個輸出,為你提供學生行和來自課程表的匹配課程行資訊。
uj5u.com熱心網友回復:
你有一個課程表。它的主鍵被稱為ID。然后你應該有一個學生表,并且它的主鍵也應該被稱為ID。然后你有一個學生課程表,即一個學生參加的課程。這應該指的是兩個ID。這是一個建立m:n關系的橋梁表,因為一個學生可以參加很多課程,一個課程可以有很多學生參加。
CREATE TABLE course
(
id INT PRIMARY KEY,
course_name VARCHAR(50)。
school_name VARCHAR(50)
);
創建 TABLE student
(
id INT PRIMARY KEY,
name VARCHAR(50)。
姓氏 VARCHAR(50)。
phone_number VARCHAR.
);
創建 TABLE student_course
(
course_id INT,
student_id INT,
CONSTRAINT fk_student_course_course FOREIGN KEY(course_id) REFERENCES course(id) 。
CONSTRAINT fk_student_course_student FOREIGN KEY(student_id) REFERENCES student(id)
);
(題外話:你似乎在處理不同的學校。是這樣嗎?那么你最好也有一個學校表,讓班級和學生通過學校的ID來參考它。如果一個學生只能參加他們所在學校的課程,那么也許使用復合鍵將是有益的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/306820.html
標籤:
上一篇:MySQL如何四舍五入小數?
