MySQL-将其他表中的多行连接为数组

时间:2018-10-10 13:42:09

标签: php mysql pdo

我很难弄清楚如何从第二张表中联接多行。我尝试使用GROUP_CONCAT,但想将它们显示为数组(请参见下图中的绿色框)

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

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

enter image description here

1 个答案:

答案 0 :(得分:1)

您实际可以做的是使用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,曼谷ID为2)。该查询将输出:

enter image description here

然后可以使用json_encode

将其转换为JSON(作为所需的输出)

作为旁注,如果可能的话,您应该真正地期待规范化数据库。它违反了first normal form,而且还有更多的副作用,您可以检查here