【发布时间】:2018-09-04 11:57:20
【问题描述】:
我正在尝试在 mySQL 上的 2 个表之间建立链接,但是我认为这比我想象的要难一些。
我有 3 张桌子 * 一个注册我的规则信息 * 一个注册我的转账信息的 * 一个首先在两者之间建立支点。
CREATE TABLE `rules` (
`id` int,
`Name` varchar(10)
);
INSERT INTO `rules` (`id`, `name`) VALUES
(1,'a'),
(2,'b'),
(3,'c'),
(4,'d');
CREATE TABLE `pivot` (
`id_rule` int,
`id_transfert` int
);
INSERT INTO `pivot` (`id_rule`, `id_transfert`) VALUES
(1,1),
(1,2),
(2,1),
(2,2),
(2,3);
CREATE TABLE `transferts` (
`id` int,
`aeroport` varchar(50),
`station` varchar(50)
);
INSERT INTO `transferts` (`id`, `aeroport`,`station`) VALUES
(1,'GVA','Flaine'),
(2,'GNB','La Tania'),
(3,'GNB','Flaine');
我想要做的是使用一个列来获取我的所有规则,该列将所有链接的传输收集为 JSON 字符串。如下所示
-------------------------------------------------- ---------------------- |编号 |姓名 |转让| -------------------------------------------------- ---------------------- | 1 |一个 | {“GVA”:“弗莱恩”} | -------------------------------------------------- ---------------------- | 2 |乙 | {“GVA”:“Flaine”,“GNB”:“Flaine”,“La Tania”} | -------------------------------------------------- ----------------------我实际上是这样做的:
选择 rule.id, rule.name,GROUP_CONCAT(stations.transferts SEPARATOR ",") as transferts 从 规则规则 左外连接 枢轴枢轴 在 (pivot.id_rule = rule.id) 左外连接 ( 选择身份证, CONCAT(机场,“:”, GROUP_CONCAT(站) ) 作为转移 FROM 转账 按机场分组 ) 车站 在 (pivot.id_transfert = station.id) 通过...分组 规则.id但这给我返回了一个“空”值。我不明白我做错了什么。 请问有人可以帮助我吗?
仅供参考,我受到此链接的启发 MySQL: GROUP_CONCAT with LEFT JOIN
【问题讨论】:
-
据我所见,您预期的 JSON 无效。您不能有一个指向 CSV 字符串列表的键。
-
您使用的是哪个版本的 MySQL? 5.7 包括 JSON 支持,5.7.22 支持聚合 JSON 函数,这在这里可能会有所帮助
-
感谢您的回答。我的 mySQL 版本是 5.6.39。你能给我一个聚合 JSON 的例子吗?
标签: mysql concat group-concat