私は5つの別々のselectステートメントを持っています。phpで選択ステートメントを結合し、時間でソート
<?
$stmt=$db->prepare('SELECT * FROM table1 WHERE username = :username');
$stmt->bindParam(':user', $username);
$stmt->execute();
$row = $stmt->fetchAll();
$stmt=$db->prepare('SELECT * FROM table2 WHERE username = :username');
$stmt->bindParam(':user', $username);
$stmt->execute();
$row = $stmt->fetchAll();
$stmt=$db->prepare('SELECT * FROM table3 WHERE username = :username');
$stmt->bindParam(':user', $username);
$stmt->execute();
$row = $stmt->fetchAll();
$stmt=$db->prepare('SELECT * FROM table4 WHERE username = :username');
$stmt->bindParam(':user', $username);
$stmt->execute();
$row = $stmt->fetchAll();
$stmt=$db->prepare('SELECT * FROM table5 WHERE username = :username');
$stmt->bindParam(':user', $username);
$stmt->execute();
$row = $stmt->fetchAll();
?>
私は、すべての結果を組み合わせた最初の最新の時刻と時間に基づいてすべての結果を整理し、その結果から来たテーブルに基づいてメッセージをエコーする必要があります。
各テーブルには行時間があります。
例の結果:
<p>This result was posted 5 minutes ago and came from table 2</p>
<p>This result was posted 10 minutes ago and came from table 5</p>
<p>This result was posted 1 day 6 hours ago and came from table 1</p>
<p>This result was posted 2 weeks ago and came from table 3</p>
<p>This result was posted 3 weeks ago and came from table 1</p>
UPDATES:
選択* MySQLを使用して実行可能なソリューションではない理由で絶対条件です。 Mysqlは完全なテーブル結合を行うことができず、代わりにテーブルのクロス結合を実行することで実践を反映します。しかし、クロスジョインの悲惨さを理解すれば、これらのテーブルのいくつかがユーザーのために何千もの結果を返し、クロスジョインはクロスエントリが各エントリに無数の重複した行を作成し、クロス・ジョインを行うと、数百万〜数千万行のエントリが作成されます。 PHPが唯一の解決策であるようです。
phpを使って選択を結合し、時間に基づいてソートするソリューションが必要です。これはmysqlソリューションではありません。
私はまだ私が尋ねた質問を実際に解決する有効な解決策を望んでいます。これはphpを使用して値をソートし、結果をエコーします.SQLを使用するのではありません。 – Bruce