デートアプリケーションの場合、両方のクエリのLIMIT10を組み合わせて単一の出力をクエリする必要があるテーブルがいくつかあります。個別にクエリすることは問題ではありませんが、現時点では難しいようですが、数値が正確でないため、LIMIT 10は機能しません(たとえば、LIMIT5とLIMIT5ではなく、1つのクエリで0行が返される場合があります)。 、シナリオに応じて、他の10個)。
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つのアイテムが表示されます。
1. Herb requested a date with you.
2. Megan wants a platonic relationship with you.
LIMITが10の1つのクエリでは、代わりに、組み合わせる必要のある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が開始される場合)、時間順に並べられている場合があります。このタスクを効率的に実行するためのクエリを取得する方法についてのアイデアはありますか?考え、アドバイス、チャイム、最適化は大歓迎です。