在SQL中将表用作变量

时间:2013-06-06 15:23:27

标签: mysql sql database

我有两个教室和计算机桌子,目前计算机是桌子教室的一个变量

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,但我总是得到一个错误,说我的列的大小不同。这是有道理的,因为课堂比电脑更大。感谢您提供任何帮助!

3 个答案:

答案 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键。不幸的是,你无法引用整个表格。