【问题标题】:LEFT JOIN into nested array in php左连接到php中的嵌套数组
【发布时间】:2012-06-18 15:47:49
【问题描述】:

我正在寻找此类查询的通用解决方案:

SELECT * FROM A
LEFT JOIN B on A.ID = B.FK_ID
SELECT * FROM A

LEFT JOIN B on A.ID = B.FK_ID
LEFT JOIN C on B.ID = C.FK_ID

将它放在一个数组中,因此连接的记录将位于嵌套数组中。这很复杂不是吗?我所拥有的只是查询并获取所有记录

编辑:

它通常会返回

A.col1  A.col2  A.col3  B.col1  B.col2  B.col3

如果 A 有 4 行且 B 的 2 条记录连接到 A,则 A 将有 5 行。相反,我想要这个:

A.col1  A.col2  A.col3  B (array)

【问题讨论】:

  • 很抱歉,您的问题是什么?什么是“加入记录”?您如何确定查询返回的哪些列是嵌套的以及嵌套的深度?两个表中都存在一列。

标签: php mysql left-join


【解决方案1】:

当你构造的源数组稍有不同时,你可以使用这个函数。

这是重复的 (http://stackoverflow.com/questions/8431463/more-efficient-hierarchy-system/8431551) (parent_id,id,title):

$q = mysql_query("SELECT id, parent_id, name FROM categories");
while ($r = mysql_fetch_row($q)) {
  $names[$r[0]] = $r[2];
  $children[$r[0]][] = $r[1];
 }

function render_select($root=0, $level=-1) {
  global $names, $children;
  if ($root != 0)
    echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>';
  foreach ($children[$root] as $child)
    render_select($child, $level+1);
}

echo '<select>';
render_select();
echo '</select>';

【讨论】:

    猜你喜欢
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    相关资源
    最近更新 更多