从元数据表拿数据绑定下拉框的SQL语句写法:

来源:互联网 发布:手机验钞机软件 编辑:程序博客网 时间:2024/05/22 15:16

从元数据表拿数据绑定下拉框的SQL语句写法:
SELECT
c.customer_name,
m1.meta_name,
m2.meta_name,
m3.meta_name,
m4.meta_name,
m1.meta_name AS level_name,
m2.meta_name AS province_name,
m3.meta_name AS status_name,
m4.meta_name AS property_name
FROM
customer c
LEFT JOIN metadata AS m1 ON c. LEVEL = m1.id
LEFT JOIN metadata AS m2 ON c.province = m2.id
LEFT JOIN metadata AS m3 ON c. STATUS = m3.id
LEFT JOIN metadata AS m4 ON c.customer_property = m4.id

查询结果:
电子三路 I 湖南省 维修中 国企 I 湖南省 维修中 国企
电子三路 II 四川省 完成 国企 II 四川省 完成 国企
电子二路 III 陕西省 异常 国企 III 陕西省 异常 国企
电子二路 IV 湖南省 新项目 私企 IV 湖南省 新项目 私企
电子正街 V 四川省 维修中 私企 V 四川省 维修中 私企
电子正街 V 陕西省 完成 私企 V 陕西省 完成 私企

其中下拉框的搜索条件出了很多次错。比如这次:
SQL []; Column ‘status’ in where clause is ambiguous; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column ‘status’ in where clause is ambiguous

他说的是查询“status”状态不明确是因为写查询条件的时候SQL少写了别名。因为2个表里面都有status这个字段所以查询语句它找不到到底是那个status字段。所以要加别名。这样比较严谨。

这是完整的写在mapping文件里面的SQL语句:
select

from customer c
LEFT JOIN metadata as m1 on c.level = m1.id
LEFT JOIN metadata as m2 on c.province = m2.id
LEFT JOIN metadata as m3 on c.status = m3.id
LEFT JOIN metadata as m4 on c.customer_property = m4.id


customer_name like “%”#{customerName}”%”

0”>
AND province = #{province}

0”>
AND county = #{county}

0 “>
AND level = #{level}

0 “>
AND c.status = #{status}

0 “>
AND customer_property = #{customerProperty}


AND source LIKE #{source}


= 0 and pageSize > 0”>
limit #{pageIndex},#{pageSize}

完整的实现绑定下拉框是通过给下拉框那个给绑定一个Id。然后通过这个Ajax请求来请求后台拿到值。
$(function () {
var json = {
parentId : 2
}
callSapiServer(“/metadata/listByParentId”,function(data){
document.getElementById(“deptId”).options.add(new Option(“请选择部门”,0));
for(var i in data.result){
document.getElementById(“deptId”).options.add(new Option(data.result[i].metaName,data.result[i].id));
}
},”GET”,json);
});

0 0
原创粉丝点击