1

我有两张桌子教室和电脑,目前电脑是桌子教室里的一个变量

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 但我总是收到一个错误,说我的列大小不同。这是有道理的,因为教室比电脑大。谢谢你提供的所有帮助!

4

3 回答 3

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)
);
于 2013-06-06T15:31:41.397 回答
0

由于一个给定的教室可以有许多计算机,但给定的计算机一次只能在一个教室中,因此将教室作为计算机桌上的外键更有意义,而不是反之:

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
于 2013-06-06T15:36:12.430 回答
0

如果有人遇到这个,我想做的事情是不可能的。您只能引用其他表中的其他列或创建外键。不幸的是,您不能引用整个表格。

于 2013-06-12T15:09:35.310 回答