gpt4 book ai didi

mysql - 数据库摆脱重复属性

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:29 25 4
gpt4 key购买 nike

基本上我有 3 个表:student、class 和 enrollment。

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

我会得到这样的东西: enter image description here

如何删除 student_id 和 class_id 等冗余列?

这个问题是从页面延伸出来的: Table structure - Link one student with multiple classes id

demo

我一直在使用join的方法,但是我没有得到我想要的,谢谢你的帮助。

最佳答案

要回答这个问题,回顾一些基础知识可能会很好:

SELECT *

* 是显示您选择的表中的所有列

如果你只想显示一些列,你必须具体命名:

SELECT class_name, ...

但是如果你有一些具有相同列名的表,你必须指定表名或别名:

SELECT c.class_name
FROM mytable t
INNER JOIN class c ON c.id_table = t.id

关于mysql - 数据库摆脱重复属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51065071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com