0

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       ...       

..... は、両方のテーブルの動的列名です。したがって、列名は動的であり、クエリレベルで名前を変更 (エイリアス) したいため、列名がわからない場合があります。どうすればこれを行うことができますか教えてください。

4

1 に答える 1

1

information_schemaその 2 つのテーブルの列名を取得するには、 をクエリする必要があります。cd列名が配列に格納され、列名が配列$cd_columnscd_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 ...';

これは役に立ちましたか?

于 2012-06-01T12:10:51.380 に答える