別の解決策
1テーブル
http://dev.mysql.com/doc/refman/5.7/en/show-columns.htmlを分析するために、テーブルからのshow列を実行テーブル
<?php $tables = ['table1', 'table2', 'table3']; ?>
2のリストを作成します
<?php
$structures = [];
$structuresLinear = [];
foreach($tables as $table) {
$query = mysqli_query('SHOW TABLES FROM ' . $table);
while ($row = mysqli_fetch_row($query)) {
$structures[$table][] = $row[0];
$structuresLinear[] = sprintf('%s.%s as %s', $table, $row[0], $table . '_' . $row[0]);
}
}
$structures
各テーブルのすべてのフィールドと、別のフィールドの名前が変更された別のフィールド$structuresLinear
。
例:['table1.id as table1_id', 'table1.name as table1_name', ...]
3。
<?php
$sql = 'SELECT ';
$sql .= implode(', ', $structuresLinear);
$sql .= ' FROM ' . implode(' INNER JOIN ', $tables);
$sql .= ' ORDER BY ' . implode(', ',
array_map(function($t) {
return $t . '.updated_time';
}, $tables)
);
?>
出力、最終的なクエリを作成
あなたはこのようなものがあります:
SELECT
table1.id as table1_id,
table2.id as table2_id, table2.col2 as table2_col2, table2.col3 as table2_col3
FROM table1
INNER JOIN table2
ORDER BY
table1.updated_time,
table2.updated_time
を、最終的な配列は次のようになります。あなたはまた、それぞれ$を分割することができます
Array(
[0] => Array(
table1_id = table1.id,
table2_id = table2.id,
table2_col2 = table2.col2,
table2_col3 = table2.col3,
)
)
テーブルを持つか、またはマルチディジット配列を作成するキーの結果:)
こんにちは。 'SELECT'部分を修正してください。 't1.idをIDとして、t1.columnを列1として、t3.column3を列3として、... –
テーブル内に15列以上存在し、テーブルごとに異なる可能性があります –
Ok。これは不可能です...直接:)しかし、あなたはいくつかのトリックを使用することができます。例:テーブル構造( 'SHOW COLUMNS')を分析し、t1.idをt1_id、t1.c1をt1_c1、t2.idをt2_id ...としてSQLクエリを動的に作成します。これはいくつかのORMで使用されるヒントです。 –