デートアプリケーションでは、両方のクエリのLIMIT 10を組み合わせて1つの出力をクエリする必要があるテーブルがいくつかあります。別々にクエリするのは問題ではありませんが、現時点では難しいようですが、数値が正確ではないためLIMIT 10は機能しません(例:LIMIT 5とLIMIT 5ではなく、 、他方はシナリオに応じて10)。MySQL - 効率的にLIMITを使用して2つのSELECT文を1つの結果にまとめる
members table
member_id | member_name
------------------------
1 Herb
2 Karen
3 Megan
dating_requests
request_id | member1 | member2 | request_time
----------------------------------------------------
1 1 2 2012-12-21 12:51:45
dating_alerts
alert_id | alerter_id | alertee_id | type | alert_time
-------------------------------------------------------
5 3 2 platonic 2012-12-21 10:25:32
dating_alerts_status
status_id | alert_id | alertee_id | viewed | viewed_time
-----------------------------------------------------------
4 5 2 0 0000-00-00 00:00:00
あなたはカレンあるだけでログインして想像し、あなたはこれらの2つの項目が表示されるはずです。その代わり、ここで10のLIMITと1つのクエリで
1. Herb requested a date with you.
2. Megan wants a platonic relationship with you.
を組み合わせる必要が2つのクエリは、次のとおりです。
1. Herb requested a date with you.
-> query = "SELECT dr.request_id, dr.member1, dr.member2, m.member_name
FROM dating_requests dr
JOIN members m ON dr.member1=m.member_id
WHERE dr.member2=:loggedin_id
ORDER BY dr.request_time LIMIT 5";
2. Megan wants a platonic relationship with you.
-> query = "SELECT da.alert_id, da.alerter_id, da.alertee_id, da.type,
da.alert_time, m.member_name
FROM dating_alerts da
JOIN dating_alerts_status das ON da.alert_id=das.alert_id
AND da.alertee_id=das.alertee_id
JOIN members m ON da.alerter_id=m.member_id
WHERE da.alertee_id=:loggedin_id AND da.type='platonic'
AND das.viewed='0' AND das.viewed_time<da.alert_time
ORDER BY da.alert_time LIMIT 5";
再び、時には両方のテーブルが空であってもよく、または1つのテーブルが空、またはフル(ここでLIMIT 10回のキックで)と時間によって順序付けの両方であってもよいです。どのようにこのタスクを効率的に実行するためのクエリを得るためのアイデア?思考、アドバイス、チャイム、最適化を歓迎します。
2つのクエリによって返された列が同じ場合は、それらを['UNION'](http://dev.mysql.com/doc/refman/5.6/en/union.html)に結合し、全体を'LIMIT'を実行する外部クエリに対するサブクエリです。そうでなければ、必要な 'LIMIT'を2番目のクエリに適用することができます(最初のクエリから返されたレコードの数から10を差し引いたもの) - おそらくクエリを呼び出すために使用する言語でこれを行うのが最も簡単です。 – eggyal
期待どおりの結果を持つテーブルを作成します。あなたはそこに問題を見るでしょう。 –
2つのクエリを異なる選択リストと組み合わせることはできません。 – vyegorov