繁体   English   中英

MySQL选择许多表,每个表的结果都是它自己的键/值对

[英]MySQL select many tables, each table's results being it's own key/val pair

希望这不是一个愚蠢的问题,在标题中很难解释,但是...我有一定数量的表,而且大多数表都没有相同的结构... startDate除外。 例如,假设有三个表具有这样的列结构:

t1:
id   a   b   c   startDate

t2:
id   e   f   g   h   i    startDate

t3:
id   j   k   startDate

我想让它们全部进入结果,看起来像这样的json类型格式:

[{"t1":array({
    //all rows for t1
    })
 },{"t2":array({
    //all rows for t2
    })
 },{"t3":array({
    //all rows for t3
    })
 }]

我希望能够在PHP中执行以下操作:

foreach ($results as $key => $val) {
    if ($key == "t1") {
        //parse t1 $val array
    }elseif ($key == "t2") {
        //parse t2 $val array
    }elseif ($key == "t3") {
        //parse t3 $val array
    }
}

我知道用UNION ALL可能,但是我必须对列做NULL值,所以如果我有6或7个表,查询将非常混乱。 有没有一种方法可以使用GROUP_CONCAT获得期望的结果,也可以使用startDate BETWEEN arg1 AND arg2

还是...最好进行for循环并查询每个表,然后将其全部整合到PHP中?

请尝试这个

//db connection

$json = array();
$tables = array("t1","t2","t3");
for($i=0;$i<count($tables);$i++){
    $rows = array();$row = array();
    $sql = "SELECT * FROM $tables[$i]";
    $result = mysql_query($sql);
    while($row = mysql_fetch_assoc($result)){
        $rows[] = $row;
    }
    $json[$tables[$i]] = $rows;
}

//you can use print_r($json) to display the array or json like
echo json_encode($json)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM