1

教室とコンピューターの 2 つのテーブルがあり、現在コンピューターはテーブル教室の変数です

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 を使用するには、2 つのテーブル間に主キーと外部キーの関係が必要です。次のようにテーブルを作成する必要がある場合があります。

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

特定の教室には多くのコンピューターを配置できますが、特定のコンピューターは一度に 1 つの教室にしか存在できないため、その逆ではなく、コンピューター テーブルの外部キーとして教室を使用する方が理にかなっています。

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 に答える