有这样几张表:
要查询某一地区的url情况,需要从urlcollect表中的mac入手,查询到该mac属于的地区。
问题是urlcollect表没有键和router关联,虽然他们都有mac字段……
请问django有没有方法可以查询这种没有外键连接的情况
我用两层循环可以得到数据,但是很耗时:
r = Routers.objects.filter(router_groups_id__province_id=7644)
for i in r:
u = UrlCollect.objects.filter(router_mac=i.mac)
for j in u:
print(j.url)
如果用原生sql语句就快很多:
SELECT url.url, count(url.url) nums, r.mac, rg.province_id, d.name from app_urlcollect AS url
RIGHT JOIN app_routers AS r ON url.router_mac=r.mac
RIGHT JOIN app_routergroups as rg ON r.router_groups_id=rg.id
RIGHT JOIN app_districts AS d ON d.id=rg.province_id WHERE rg.province_id='7644'
GROUP BY url.url
求一个优雅一点的django方法?