我有两个教室和计算机桌子,目前计算机是桌子教室的一个变量
CREATE TABLE classroom_tbl
(
room_id INT AUTO_INCREMENT PRIMARY KEY,
teacher_name VARCHAR(30),
subject_name VARCHAR(30),
computer VARCHAR(30)
);
我希望这样做而不是教室表中的VARCHAR变量计算机调用计算机表
CREATE TABLE computer_tbl
(
computer_id INT AUTO_INCREMENT PRIMARY KEY,
computer_type VARCHAR(30),
computer_status INT
);
有没有办法做到这一点?我已经尝试过UNION和INNER JOIN,但我总是得到一个错误,说我的列的大小不同。这是有道理的,因为课堂比电脑更大。感谢您提供任何帮助!
答案 0 :(得分:1)
我相信你是SQL的新手,并且在编程方面有一些经验。 SQL没有像我们在C / C ++ / java等编程语言中那样的变量。相反,SQL表与诸如外键关系之类的关系相互关联。您需要通过SQL教程来了解有关关系的更多信息,以下是其中一个链接:
http://www.functionx.com/sql/Lesson11.htm
为了使用JOINS,您需要在两个表之间建立主外键关系。您可能需要像这样创建表格:
CREATE TABLE classroom_tbl
(
room_id INT AUTO_INCREMENT PRIMARY KEY,
teacher_name VARCHAR(30),
subject_name VARCHAR(30),
computer_id INT REFERENCES computer_tbl(computer_id)
);
答案 1 :(得分:0)
由于给定的教室中可以有许多计算机,但是一台计算机一次只能在一个教室中,因此将教室作为计算机桌上的外键更有意义,而不是相反:< / p>
CREATE TABLE classroom_tbl
(
room_id INT AUTO_INCREMENT PRIMARY KEY,
teacher_name VARCHAR(30),
subject_name VARCHAR(30)
);
CREATE TABLE computer_tbl
(
computer_id INT AUTO_INCREMENT PRIMARY KEY,
computer_type VARCHAR(30),
computer_status INT,
room_id INT
);
要查看每个房间中的计算机,请尝试以下查询:
select r.room_id, r.teacher_name, r.subject_name,
c.computer_id, c.computer_type, c.computer_status
from classroom_tbl r
left join computer_tbl c on r.room_id = c.room_id
答案 2 :(得分:0)
如果有人遇到这个问题,我想做的事情是不可能的。您只能引用其他表中的其他列或创建foriegn键。不幸的是,你无法引用整个表格。