动态地为mysql查询中的所有字段名称分配别名

时间:2012-06-01 10:25:54

标签: php mysql dynamic schema alias

我在mysll DB中有2个表。两个表都有很少的固定列和少量动态列(字段/模式)。我想用以下查询加入这两个表:

SELECT *
FROM `cd` cd
LEFT JOIN cd_n cn ON cd.id = cn.fk_cd

我想以

结果
CD_Column1   CD_Column1   CD_Column3   ...... CN_Column1   CN_Column2   CN_Column3  .....
value        value        value        ...... value        value        value       ...       
value        value        value        ...... value        value        value       ...       

其中.....是两个表的动态列名。 所以情况是我不知道列名称,因为它们是动态的,我想在查询级别重命名(别名)它。请让我知道我该怎么做?

1 个答案:

答案 0 :(得分:1)

您需要查询information_schema以获取该两个表的列名。让我们假设您将cd数组存储在数组$cd_columns中,cd_n列名称存储在数组$cdn_columns中。

然后在PHP中通过列数组创建查询循环并执行以下操作:

$sql = 'SELECT ';

// add the cd columns
$i = 0;
foreach($cd_columns as $col) {
    $sql .= "{$col} AS CD_Column{$i},";
    $i++;
}

// add the cd_n columns
$i = 0;
foreach($cdn_columns as $col) {
    $sql .= "{$col} AS CN_Column{$i},";
    $i++;
}

// remove the trailing comma
$sql = trim($sql, ',');
// continue the SQL
$sql .= ' FROM ...';

这有用吗?