首页 > 解决方案 > MySQL - 将其他表中的多行作为数组加入

问题描述

我无法弄清楚如何从第二个表中连接多行。我尝试过使用GROUP_CONCAT,但我想将它们显示为一个数组(见下图中的绿色框)

这里的主要问题是1,2,4来自airways-column。我真的想避免有第三张表只是为了将两个表连接在一起。我知道数组很难存储在 MySQL 中,但是有没有一些神奇的方法可以从下表中获取所需的信息?

我希望我有一些代码,但我在这里迷路了。非常感谢指点!

在此处输入图像描述

标签: phpmysqlpdo

解决方案


您实际上可以做的是,使用FIND_IN_SET. 下面给出一个简单的查询:

SELECT c.name AS city_name, a.name AS airway_name, a.rating AS airway_rating
FROM og_city AS c JOIN og_airway AS a ON FIND_IN_SET(a.id, c.airways) WHERE c.id = 2

在这里,您将 id 作为 2 传递,这将有助于选择飞往曼谷的航班(og_city,Bangkok id 为 2)。此查询将输出:

在此处输入图像描述

然后可以使用将其转换为 JSON(作为您想要的输出)json_encode

附带说明一下,如果可能的话,您应该非常期待对数据库进行规范化。它违反了第一范式,还有很多副作用,你可以在这里查看


推荐阅读