内部连接动态表数

时间:2012-12-10 18:31:51

标签: php mysql

我有一个函数接受一个表数组作为参数,并在内部连接后返回结果行。

function myfunc($tables, $join_on) {
 foreach($tables as $table) {
  // build query
 }
}

如何构建查询?例如,如果$tables = array('table1', 'table2')$join_on = 'field_x',则应创建以下查询:

SELECT * FROM table1 INNER JOIN table2 ON table1.field_x = table2.field_x

2 个答案:

答案 0 :(得分:2)

您可以这样做:

function myfunc($tables, $join_on) {
    $mainTable = $tables[0];
    $sql = "SELECT * FROM $mainTable";
    for($i = 1; i<count($tables);$i++) {
        $curTable = $tables[$i];
        $joinField = $join_on[$i-1];
        $sql.= " INNER JOIN $curTable ON $curTable.$joinField = $mainTable.$joinField";
    }

    return sql;
}

当然,您需要添加一些错误检查,以确保$tables中至少有一个表,$join_on中始终有N-1个元素,其中N是{{1}中的表数}}

答案 1 :(得分:1)

As above 函数适用于 2 个表,而我正在研究大约 3 个表的工作。 任何人都可以向我提供它的流程。

我正在使用上述代码加入 3 个或更多表,但似乎不起作用。需要了解流程。