2013-06-01 2 views
0

У меня есть 3 таблицы в моей базе данных mysql: student, progress and subject. При попытке выбрать данные:Как связать таблицы mysql

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

я получаю следующую таблицу:

id mark pname 
1 5  Math 
1 5  Physics 

прогресс таблицы У меня есть только одна запись:

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) 
); 
+0

вы уже получаете output.So чем проблема – PSR

ответ

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; 
+0

Большое спасибо, вы мне очень помогли – stark

1

Попробуйте

SELECT progress.id, progress.mark, subject.pname 
FROM progress, subject 
WHERE progress.id_student = 1 AND progress.id_subject = subject.id; 
Смежные вопросы