我正在寻找一些关于SQL/MySQL问题的帮助。
我有三个源表:
CREATE TABLE `customers` (
`cid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`customer_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
CREATE TABLE `standards` (
`sid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`standard_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`sid`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8
CREATE TABLE `partial_standard_compliance` (
`customer` bigint(20) unsigned NOT NULL,
`standard` bigint(20) unsigned NOT NULL,
`standard_compliance` bigint(20) unsigned DEFAULT NULL,
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8
其原理是客户使用partial_standard_compliance表中的standard_compliance列为自己评级。客户可以多次对同一标准进行评级。结果示例:
+----------+----------+---------------------+---------------------+
| customer | standard | standard_compliance | created_time |
+----------+----------+---------------------+---------------------+
| 1 | 1 | 50 | 2023-01-28 16:19:34 |
| 1 | 1 | 60 | 2023-01-28 16:19:40 |
| 1 | 1 | 70 | 2023-01-28 16:19:48 |
| 2 | 10 | 30 | 2023-01-28 16:58:21 |
| 2 | 8 | 60 | 2023-01-28 16:58:32 |
| 2 | 9 | 60 | 2023-01-28 16:58:39 |
| 2 | 9 | 80 | 2023-01-28 16:58:43 |
+----------+----------+---------------------+---------------------+
我需要创建第四个表,其中包含客户名称、标准名称和他们自己给出的最新评级。我一直在尝试使用JOINS和CREATE AS SELECT,但一直无法解决这个问题。如果能找到正确的方向,那就太好了。谢谢。
我一直在尝试使用JOINS和CREATE AS SELECT
1条答案
按热度按时间kyks70gy1#
我需要创建第4个表,其中包含客户名称、标准名称和他们最近给自己的评级
最好创建一个视图。
https://dbfiddle.uk/ZiK-k8jN
MySQL View