0
我工作的一個項目,我被困在查詢時選擇最大值:SQL如何比較2個SQL表
我想創建某種基於無線網絡連接的GPS。 有2個表格(用戶和位置),我需要把結果放在第三個表格中。
第一個表格是發送來自用戶電話的信息的地方。
具有信號強度的電話MAC地址和無線接入點MAC。用戶手機可以看到多個無線接入點。
第二個表格是存儲所有已知無線接入點及其座標(經度和緯度)的地方。
下面是表:
Users
:
| PhoneMac | apMac | signal |
| user1 |11:11:11 | 20 |
| user1 |22:22:22 | 80 |
| user1 |33:33:33 | 50 |
| user1 |55:55:55 | 99 |
| user2 |11:11:11 | 60 |
| user3 |44:44:44 | 10 |
| user3 |11:11:11 | 90 |
Locations
表:
| apMac | Lat | Lon |
| 11:11:11 |10.000 |30.000 |
| 33:33:33 |30.000 |30.000 |
| 44:44:44 |40.000 |40.000 |
我需要一個查詢,從Users
表需要apMac,檢查它們是否在Locations
表並從那些發現的選擇信號最強的那個。
所以結果應該是PhoneMac和所選AP的座標。它應該與每個用戶一起完成。
使用上面這個表應該是正確的結果:
| PhoneMac | Lat | Lon |
| user1 |30.000 |30.000 |
| user2 |10.000 |10.000 |
| user3 |10.000 |10.000 |
sql = "SELECT t1.PhoneMac, t1.apMac, t1.signal, t2.apMac, t2.lat, t2.lon,
COUNT(t1.MacTel) AS num
FROM users t1
INNER JOIN locations t2
ON t1.apMac=t2.apMac
GROUP BY t1.PhoneMac
ORDER BY num DESC";
這是我到目前爲止的代碼。我不知道如何包含關於選擇apMac
信號最強的部分,因爲現在它只返回列表中的第一個apMac
。
這是什麼數據庫系統? * SQL *只是查詢語言 - 不是數據庫產品... –