所以基本上我有三个表:学生,班级,和注册。
CREATE TABLE class
(`class_name` varchar(13), `class_id` int primary key)
;
INSERT INTO class
(`class_name`, `class_id`)
VALUES
('math', 5697),
('science', 5768),
('computer', 6315),
('physical-ed', 6422),
('music', 7528),
('art', 7604),
('jrotc', 8797),
('culinary-arts', 8069)
;
CREATE TABLE student
(`student_fname` varchar(8), `student_id` varchar(11) primary key)
;
INSERT INTO student
(`student_fname`, `student_id`)
VALUES
('james', 'Vre94b3JpXO'),
('jim', 'JzqQ2zRVNm1'),
('jenny', 'xgqv9P42eYL'),
('kyle', 'QLNM0Wbyqk0'),
('kimberly', 'P2egAddWN0Q'),
('kayla', 'EGNDjWAreAy'),
('noah', 'bPeOyMMONGr'),
('nataly', '9Op53GGmqk5')
;
create table enrollment (
`no` int(10),
`student_id` varchar(11),
`class_id` int,
`semester` varchar(20),
primary key (`student_id`, `class_id`, `semester`),
foreign key (`student_id`) references student (`student_id`),
foreign key (`class_id`) references class (`class_id`)
);
insert into enrollment values
(1, 'Vre94b3JpXO', 5697, 'Fall 2015'),
(2,'JzqQ2zRVNm1', 5697, 'Fall 2015'),
(3, 'xgqv9P42eYL', 5697, 'Fall 2015'),
(4, 'JzqQ2zRVNm1', 8069, 'Fall 2014'),
(5, 'xgqv9P42eYL', 8069, 'Fall 2014');
如果我按照查询:
select * from student s
join enrollment e on s.student_id = e.student_id
join class c on c.class_id = e.class_id
我会得到这样的结果:
如何删除多余的列,如student\u id和class\u id?
这个问题从页面扩展而来:表结构-链接一个学生和多个班级id
和演示
我一直在使用连接方法,但我无法得到我想要的,谢谢你的帮助。
3条答案
按热度按时间ctrmrzij1#
只需指定要查看的列。
svujldwt2#
像这样:
SELECT s.* ,e.no ,e.class_id ,e.semester ,c.class_name FROM student s INNER JOIN enrollment e ON s.student_id = e.student_id INNER JOIN class c ON c.class_id = e.class_id
在select中,您可以指定所需的每一列以及顺序。如果您想要一个表中的所有列,您可以这样做:
正如您在现有查询中所做的那样,只需执行star操作即可获得所有列:
这里是一个很好的开始一些基本的
SELECT
技巧:https://www.techrepublic.com/article/sql-basics-select-statement-options/另一方面,使用以下网站可能会有所帮助:http://poorsql.com/ 以帮助您设置sql格式。
oymdgrw73#
要回答这个问题,不妨回顾一下一些基本知识:
这个
*
显示所选表中的所有列如果只想显示某些列,则必须具体命名:
但如果某些表具有相同的列名,则必须指定表名或别名: