0

mysql データベースに 3 つのテーブルがあります: student, progress and subject. データを選択しようとすると:

SELECT progress.id, progress.mark, subject.pname FROM progress, subject WHERE   progress.id_student = 1;

次の表を取得します。

id  mark  pname
1   5     Math
1   5     Physics

テーブルの進行状況 エントリは 1 つだけです。

id  mark   id_student   id_subject
1   5      1            1

で学生の進捗状況を取得するにはどうすればよいstudent_idですか?

CREATE DATABASE students;
USE students;
CREATE TABLE student (
id int NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
address varchar(60) NOT NULL,
byear int NOT NULL,
eyear int NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE subject (
id int NOT NULL AUTO_INCREMENT,
pname varchar(20) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE progress (
id int NOT NULL AUTO_INCREMENT,
mark int NOT NULL,
id_student int NOT NULL,
id_subject int NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES student (id),
FOREIGN KEY (id) REFERENCES subject (id)
);
4

2 に答える 2

1
SELECT progress.id, progress.mark, subject.pname 
FROM progress LEFT OUTER JOIN subject ON (progress.id_subject= subject.id)
WHERE   progress.id_student = 1;
于 2013-06-01T09:26:57.273 に答える
1

試す

SELECT progress.id, progress.mark, subject.pname 
FROM progress, subject
WHERE progress.id_student = 1 AND progress.id_subject = subject.id;
于 2013-06-01T09:28:18.530 に答える