データベースに と の 2 つのテーブルがevents_users
ありevents_admins
ます。この 2 つはほとんど同じです (いくつかのフィールドを除いて)。どちらのテーブルにもpromoted
フィールド (1 または 0) があります。
+-----------------+-----------------------+-------------------+-------------------+
| events_users_id | events_users_promoted | events_users_name | events_users_date |
+-----------------+-----------------------+-------------------+-------------------+
| 1 | 0 | Users foo | 2012-11-15 |
| 2 | 1 | Users bar | 2012-11-15 |
| 3 | 0 | Users foobar | 2012-11-14 |
+-----------------+-----------------------+-------------------+-------------------+
+------------------+------------------------+--------------------+--------------------+
| events_admins_id | events_admins_promoted | events_admins_name | events_admins_date |
+------------------+------------------------+--------------------+--------------------+
| 1 | 0 | admins foo | 2012-11-14 |
| 2 | 0 | admins bar | 2012-11-15 |
| 3 | 1 | admins foobar | 2012-11-16 |
+------------------+------------------------+--------------------+--------------------+
さまざまな理由から、両方のタイプのイベントを 1 つのテーブルに入れることはできません。ただし、次のように 1 つの結果が必要です。
すべてのイベントは日付順に並べられ、最新のものから順に表示されますが、管理イベントが最初に表示され、常にユーザー イベントと交互に表示されます (すべてのレコードが交互に表示されます)。昇格したユーザーと管理者のイベントが最初に表示されます。
+------------------+-----------------------+-------------------+-------------------+
| a 3 | 1 | admins foobar | 2012-11-16 |
| u 2 | 1 | Users bar | 2012-11-15 |
| a 1 | 0 | admins foo | 2012-11-14 |
| u 3 | 0 | Users foobar | 2012-11-14 |
| a 2 | 0 | admins bar | 2012-11-15 |
| u 1 | 0 | Users foo | 2012-11-15 |
+------------------+-----------------------+-------------------+-------------------+
2 つのテーブルをマージするために使用する 1 つのクエリでこれを実行できるかどうか疑問に思っていましUNION
た (1 つのテーブルのいくつかの不足しているフィールドを null としてマークします) が、それらを並べ替える方法がわかりません。現時点で私が目にする唯一の方法は、単純な .xml で 2 つの異なるクエリを使用しORDER BY promoted DESC, date ASC
、結果を 2 つの配列に入れ、それらを PHP と交互にマージすることです。
編集:現在の2つの回答では問題が正確に解決されないため、目標を十分に説明していないようです。
提案されたクエリは、最初に 1 つのカテゴリの昇格されたすべてのイベントを提供し、次に別のタイプのすべての昇格されたイベント、一方のタイプの通常のイベント、最後に他方のタイプの残りのイベントを提供します。ただし、これらも交互に行う必要があります: 1 人のユーザーが昇格し、1 人の管理者が昇格し、1 人のユーザーが昇格し、1 人の管理者が昇格します。管理者イベント...