3

同じデータベース上の異なるテーブルからの複数のselectステートメントがあります。複数の個別のクエリを使用してから、配列にロードして並べ替えていました(ここでも、クエリで並べ替えた後)。

結果をスピードアップし、「より多くのロード」を容易にするために、1つのステートメントにまとめたいと思います(下を参照)。

各クエリは、各テーブルで同じではないSELECT、LEFT JOIN、WHERE、およびORDERBYコマンドを使用します。

各ステートメントで順序付けを行う必要はないかもしれませんが、最終的には、時間を表すフィールド(必ずしもすべてのテーブルで同じフィールド名である必要はありません)で順序付けされた最終結果が必要です。

クエリ結果の合計を数値(私の場合は100)に制限したいと思います。

次に、結果のループを使用し、各行についてOBJECTNAME_ID(つまり、comment_id、event_id、upload_id)が設定されているかどうかをテストし、次にLOAD_WHATEVER_OBJECTを使用して行を取得し、データを配列にプッシュします。

配列はmysqlを介して順番にロードされたため、後で並べ替える必要はありません。

アプリの後半で、最初の100、200、または任意のページ* 100をスキップして「さらにロード」し、同じクエリで再び100に制限します。

データベースからの最終結果は、「this」のようになります。

RESULT-テーブルから選択されたフィールド-並べ替えるフィールドが最大RESULT-おそらく異なるテーブルから選択されたフィールド-並べ替えるフィールドが次に大きいRESULT-おそらく異なるテーブルテーブルから選択されたフィールド-並べ替えるフィールドが3番目に大きいなど、など

より単純な組み合わせステートメントがたくさんありますが、このようなものはありません。

どんな助けでも大歓迎です。

4

1 に答える 1

2

最も簡単な方法は、ここのUNION(http://dev.mysql.com/doc/refman/5.0/en/union.html)です。

(SELECT a,b,c FROM t1)
UNION
(SELECT d AS a, e AS b, f AS c FROM t2)
ORDER BY a DESC
于 2011-06-03T06:32:34.143 に答える