天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
查看: 2704|回复: 12

[已解决] 请教一个SQL语句的问题

[复制链接]
金中软件 发表于 2013-11-8 16:03:09 | 显示全部楼层 |阅读模式
本帖最后由 sophie 于 2013-11-8 18:05 编辑

select *, (ITEM_LONGITUDE-108.359828)*(ITEM_LONGITUDE-108.359828)+(ITEM_LATITUDE-22.820285)*(ITEM_LATITUDE-22.820285) as ITEM_dist from tlk_ko_ElectricBranch where 1=1 and not (SELECT top 1 DEFAULTDEPARTMENT FROM T_USER where id=author and DEFAULTDEPARTMENT in ('11e2-e936-99524e4e-b1e8-bd590c26946f') ) is null order by (ITEM_LONGITUDE-108.359828)*(ITEM_LONGITUDE-108.359828)+(ITEM_LATITUDE-22.820285)*(ITEM_LATITUDE-22.820285)

报这个错误:
QQ截图20131108160204.png

请问上面的SQL语句该如何修改呢?
 楼主| 金中软件 发表于 2013-11-8 16:05:39 | 显示全部楼层
回复 1# 金中软件
      不好意思,刚刚截错图了,是报这个错误:
   QQ截图20131108160501ORDER.png
echochen 发表于 2013-11-8 16:06:03 | 显示全部楼层
您好,请问您的需求是什么呢?您的这个sql语句放在数据库客户端能执行成功么?
 楼主| 金中软件 发表于 2013-11-8 16:20:32 | 显示全部楼层
回复 3# echochen
    额,需求详见http://www.teemlink.com/bbs/view ... 1562&highlight=
     SQL语句在数据库可以执行,但是没有记录
   这是我在视图的SQL模式的脚本

  1. var sql="select *, (ITEM_LONGITUDE-108.359828)*(ITEM_LONGITUDE-108.359828)+(ITEM_LATITUDE-22.820285)*(ITEM_LATITUDE-22.820285) as ITEM_dist from tlk_ko_ElectricBranch  where 1=1 ";

  2. var electricbranchid=getItemValueAsString("_ElectricBranchID");//参数
  3. var electricbranchname=getItemValueAsString("_ElectricBranchName");//参数


  4. if(electricbranchid  !=""&&electricbranchid !=null ){
  5. sql+=" and item_ElectricBranchID like '%"+electricbranchid+"%' ";
  6. }
  7. if(electricbranchname !=""&&electricbranchname !=null ){
  8. sql+=" and item_ElectricBranchName like '%"+electricbranchname+"%' ";
  9. }

  10. #include "kingonLib";
  11. sql+= "   and not (SELECT top 1  DEFAULTDEPARTMENT FROM T_USER where id=author and DEFAULTDEPARTMENT in ("+getUserMappingDeptIds()+") ) is null ";

  12. sql+="order by (ITEM_LONGITUDE-108.359828)*(ITEM_LONGITUDE-108.359828)+(ITEM_LATITUDE-22.820285)*(ITEM_LATITUDE-22.820285)";
  13. println("SQL==="+sql);
  14. sql;
复制代码
  1. //引用到的kingonLib 函数库
  2. /**获取当前用户有权限查阅的部门*/
  3. function getUserMappingDeptIds(){
  4.    var user = getWebUser();
  5.    var underDepts = user.getLowerDepartmentList();
  6.    var currDepts = user.getDeptlist();

  7.    var depts = "";
  8.    if(underDepts != null && underDepts.length()>0){
  9. if(currDepts != null && currDepts.length()>0){
  10.   depts = underDepts + "," + currDepts;
  11. } else {
  12.   depts = underDepts;
  13. }
  14.    } else {
  15. depts = currDepts;
  16.    }
  17.    return depts;
  18. }
复制代码
 楼主| 金中软件 发表于 2013-11-8 16:29:51 | 显示全部楼层
回复 4# 金中软件

    QQ截图20131108162318ORDER.png
    上面的代码加了order by之后就报错了,而order by后就是计算两点之间最短的距离(即直线)的算法
kimi 发表于 2013-11-8 16:31:06 | 显示全部楼层
您好:我是想问您加了order by后的sql语句中数据库客户端是否能正常执行。
 楼主| 金中软件 发表于 2013-11-8 16:32:50 | 显示全部楼层
回复 6# kimi
    可以吧, QQ截图20131108163203DB.png
sophie 发表于 2013-11-8 16:44:31 | 显示全部楼层
您在客户端能正常执行么,且能查出正确的结果集么?
 楼主| 金中软件 发表于 2013-11-8 16:52:50 | 显示全部楼层
回复 8# sophie
     可以的
sophie 发表于 2013-11-8 17:02:18 | 显示全部楼层
您打印的sql是怎么样,贴一下sql语句。同时找一下我吧。

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-13 07:26

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表