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 *只是查询语言 - 不是数据库产品... –