【问题标题】:MySQL and PHP - Efficiently get rows and arrays associated with each rowMySQL 和 PHP - 有效地获取与每一行关联的行和数组
【发布时间】:2011-05-28 01:02:25
【问题描述】:

我有两张桌子:

表1:

ID | user | info
------------------
1    1      data1
2    1      data2
3    2      data3

表2:

table1_id | array_info
------------------------
1             a  
1             b
2             a
3             d
3             g
3             m

如何有效地返回与用户关联的行,以便获得信息和该 ID 的关联 array_info 的数组?

例如,像“select ID, info from table1 where user = 1”这样的查询,但也会从 table2 返回 [a,b],因此结果将类似于 [1, data1, [a, b] ] 与第一行和 [2, data2, [a]] 与第二行。类似地,“...where user = 2”应该返回类似 [3, data3, [d, g, m]] 的内容。我不认为 MySQL 返回的东西很像这样,但也许 PHP 可以平滑左连接的输入?如果 MySQL 为每个 array_info 返回单独的行,复制 info 中的所有数据似乎很浪费,但我不确定是否有其他方法。

【问题讨论】:

  • 考虑以不同的方式重新提出您的问题。刚看了三遍,还是看不懂。当你说[1, data1, [a, b]] 并提供一个永远不可能选择的查询时,你完全放弃了理解你想要什么的可能性。
  • 我的意思是,对于调用“...where user = 1”,我想返回 2 行,其中一个字段是 ID,一个是数据,一个是大批。在第一行,数组是 [a, b],在第二行,数组是 [a]。

标签: php mysql sql query-optimization


【解决方案1】:

您可以将 GROUP_CONCAT 与 JOIN 结合使用,然后在迭代结果时,使用 explode() 将连接的字符串转换为数组。

【讨论】:

  • 同意基于先前评论@Anonymous1 的组连接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 2013-11-18
  • 2020-03-08
  • 2014-05-12
  • 2011-02-20
  • 2014-01-20
  • 1970-01-01
相关资源
最近更新 更多