これは基本的な方法です。この例では、各テーブルに 'id'フィールドと 'timestamp'フィールドがあり、結果をタイムスタンプフィールドでソートする必要があります。
<?
function bubblesort(array $items) {
// Sorts the items in a two-dimensional array based on a
// timestamp in the first field of the arrays passed.
do{
$flag = false;
for ($i = 0; $i < (count($items) - 1); $i++) {
if(strtotime($items[$i][0]) > strtotime($items[$i + 1][0])) {
$swap = $items[$i];
$items[$i] = $items[$i + 1];
$items[$i + 1] = $swap;
$flag = true;
}
}
}
while($flag);
return $items;
}
$results = array();
// Get results for the first table
$result = mysql_query("SELECT `timestamp`, `id` FROM `table1`;");
if (!$result)
die(mysql_error());
while ($row = mysql_fetch_array($result))
$results[] = array($row[0], $row[1]);
// Get results for the second table
$result = mysql_query("SELECT `timestamp`, `id` FROM `table2`;");
if (!$result)
die(mysql_error());
while ($row = mysql_fetch_array($result))
$results[] = array($row[0], $row[1]);
// Get results for the third table
$result = mysql_query("SELECT `timestamp`, `id` FROM `table3`;");
if (!$result)
die(mysql_error());
while ($row = mysql_fetch_array($result))
$results[] = array($row[0], $row[1]);
// Sort the joint results
$results = bubblesort($results);
?>
もちろん、それぞれのクエリは個々のテーブルに適合させる必要があります。バブルソートアルゴリズムを使用していますが、期待している結果の量によっては、別のソートアルゴリズムが良いかもしれません。
UNION(the documentationを参照)を使用して3つのSELECTクエリを1つにマージする方が良いかもしれませんが、必要なクエリを伝えるためのテーブルの構造については十分に分かりません。
はい、私のアルゴリズムと同じように、ページの結果に分割しないように記述します。私の仕事はもっと複雑で、私は解決するためのさまざまなアプローチを探しています。 –
ああ、申し訳ありませんが、私はあなたの質問に誤解しました。それを読んだ後は、あなたが今のものよりも良い方法を考えることができません。 – EdoDodo