これが私のシナリオです。2つの異なるテーブルがあります。テーブル「subscriptions」にはユーザーサイトへのサブスクリプションに関連するすべての情報が含まれ、「ratings」テーブルにはサブスクライブサイトの製品のスコアが含まれます。単純化は次のようなものです。
Subscriptions: 'id','user','place','created', etc.
Ratings: 'id','user','product','created',etc.
ここで、サブスクリプションまたは評価のいずれかである最新の10個のアイテムを返すためにmysqlが必要です。これまでのところ、見つかった解決策は2つの異なる呼び出しを行うことでした。
SELECT * FROM subscriptions WHERE ... ORDER BY created LIMIT 10.
2つの結果(20要素)を使用して、「created」で多次元配列を並べ替え、(結果を$ itemsに保存して)上位10を取得します。
$items = array_slice($items, 0, 10);
このソリューションは2回の呼び出しで取得し、必要以上の要素を返すため、効率的ではないと思います。UNION演算子を使用すると、同じ列数で複数の異なるテーブルを一度に選択できることを読んでいます。私の質問は、1回の呼び出しで、共通のフィールド(私の場合は作成された)によって順序付けられたさまざまなタイプの特定の数の要素を結合する最も効率的な方法は何ですか?可能ですか?どうもありがとう、イエス様、どんな助けでもありがたいです。