但是,由於第二個查詢是在第一個查詢的循環中運行的,因此我無法對第一個查詢返回的結果重新排序。將兩個查詢合併爲一個並重新排序
第一個查詢總是返回結果,第二個查詢 - 有時候,但是當它需要時,我需要這些結果在最上面。默認情況下,結果按距離排序,從最近開始。
例如,這裏就是我現在得到:
- 名1(PHONE1) - 0.1英里
- 名稱2(PHONE2) - 0.4英里
- NAME3(電話3) - 1.3英里< - 現在打開(查詢2匹配)
- NAME4(PHONE4) - 2.4英里
我想看到什麼:
- NAME3(電話3) - 1.3英里< - 現在打開(查詢2匹配)
- 名1(PHONE1) - 0.1英里
- 名稱2(PHONE2) - 0.4英里
- NAME4(PHONE4) - 2.4 MI
這裏是我當前的查詢(簡體):
查詢1:
SELECT
t1.busName,
t1.busPhone
FROM t1
WHERE t1.lat BETWEEN $min_lat AND $max_lat
AND t1.lon BETWEEN $min_lon AND $max_lon
ORDER BY (POW((t1.lon-$lon),2) + POW((t1.lat-$lat),2))
LIMIT 5
查詢2:
SELECT COUNT(t3.rule_id) AS rcount
FROM t3
LEFT JOIN t2 ON (t3.rule_busID = t2.busID)
WHERE t3.APIid = '".$APIid."'
還有一個問題,我有是,有沒有辦法建立T1和T3之間的直接連接。唯一的辦法是讓T2
t1.APIid = t2.APIid
t2.busID = t3.rule_busID
表結構如下:
t1
--------------------------------------
busName | busPhone | lon | lat | APIid
t2
--------------------------------------
busID | APIid
t3
--------------------------------------
rule_id | rule_busID
目前,有兩個疑問,如果我返回10個結果我要運行11個查詢。理想情況下,我只想做一次。
對不起,這可能很明顯,但我卡住了。
什麼是你的表結構?和他們的關係? – nacho
@nacho我添加了表格結構。所有關係都在OP中。 – santa
你應該更精確地解釋你想要訂購結果的方式。按距離ASC,numberOfRules DESC? –