• 1000 если ваши таблицы выглядят так
DROP TABLE IF EXISTS SEM1,SEM2,SEM3;
CREATE TABLE SEM1(roll INT primary key, sub1 INT, sub2 INT, gpa DECIMAL(10,2));
CREATE TABLE SEM2(roll INT primary key, sub3 INT, sub4 INT, gpa2 DECIMAL(10,2));
CREATE TABLE SEM3(roll INT primary key, sub5 INT, sub6 INT, gpa3 DECIMAL(10,2));
INSERT INTO sem1 VALUES
(001 , 98 , 99 , 8.5 ),
(002 , 99 ,100 , 9.9 );
INSERT INTO sem2 VALUES
(001 , 88 , 87 , 8.1 ),
(002 , 89 , 90 , 9.0 );
INSERT INTO sem3 VALUES
(001 , 85 , 75 , 8.5 ),
(002 , 90 , 80 , 8.9 );
Тогда ваш запрос (с поправками) даст результат -
select roll,gpa,gpa2,gpa3
from sem1 natural
join sem2 natural
join sem3
where roll=001;
+------+------+------+------+
| roll | gpa | gpa2 | gpa3 |
+------+------+------+------+
| 1 | 8.50 | 8.10 | 8.50 |
+------+------+------+------+
1 row in set (0.001 sec)
Для ясности лучше всего уточнять имена столбцов, например
select SEM1.roll,SEM1.gpa,SEM2.gpa2,SEM3.gpa3
from sem1
natural join sem2
natural join sem3
where SEM1.roll=001;
Но не используйте естественные соединения, используйте левые соединения, например
select SEM1.roll,SEM1.gpa,SEM2.gpa2,SEM3.gpa3
from sem1
left join sem2 on sem1.roll = sem2.roll
left join sem3 on sem1.roll = sem3.roll
where SEM1.roll=001;
, но даже это недостаточно надежно, на мой взгляд, полагаясь, как и на вождение sem1, и всегда содержащий все различные номера рулонов, содержащиеся в sem2 и sem3. Более жестким подходом было бы получить все отчетливые номера рулонов со всех 3-х столов и двигаться дальше.