utibet田同学 发表于 2021-2-1 23:33

SQL查询语句

现在有三个表

admin_user(字段ID,USERNAME,PASSWORD,ORG_ID,CLASS_ID,LEVEL,NAME) 其中的ORG_ID,class_id在某些情况下为0。

org_info(字段org_id,name)

class_info(字段id,name,org_id)

比如现在admin_user中有一条数据为
id    username    password    level    org_id    class_id    name
1    username      password       3            0            0       张三
2    username1    password1   2            1            0       李四

3    username2    password2   1            1            1       王五


class_info中有一条数据为
id            name                org
1             班级1               1

org_info中数据为

org_id            name

1                  组织1


想得到的结果是查询A中的数据时,返回的结果为

id    username    level    org_id    class_id    name
1    username          3            0            0      张三
2    username1      2      组织1          0       李四

3    username2      1      组织1      班级1    王五

零下八度 发表于 2021-2-1 23:49

个人建议,问SQL问题,说明数据库类型,附上创建表和初始化数据的SQL(不用手打的,数据库可以直接导出),回复率应该会高很多。

就像我,哪怕我心里有思路怎么写你的SQL了,我还是实在不想对着你的帖子辛辛苦苦的复制粘贴新建表,新建字段,添加数据,来写个sql。。。

starae86 发表于 2021-2-1 23:55

SELECT
u.ID,
u.USERNAME,
U.LEVEL,
IFNULL(o.name, u.ORG_ID),
IFNULL(c.name, u.CLASS_ID),
u.NAME
FROM
admin_user u
LEFT JOIN org_info o
    ON u.ORG_ID = o.ORG_ID
LEFT JOIN class_info c
    ON u.CLASS_ID = C.CLASS_ID ;

a13244813123 发表于 2021-2-1 23:55

楼上正解,而且。。你这个直接百度多表关联查询。。多看看那些语法,花点时间你就知道你这个怎么查询了。。实际上就只是where条件如何运用的问题

pxhzai 发表于 2021-2-2 00:02

本帖最后由 pxhzai 于 2021-2-2 00:04 编辑

https://wwx.lanzoui.com/inJyEl766ch







zrmpop 发表于 2021-2-2 00:34

SELECT a.id, a.username,a.level,case a.org_id WHEN 0 then 0 else b.name end as org_id, case a.class when 0 then 0 else c.name end as org_id,a.NAME
from admin_user a
left join org_info b on a.org_id = b.org_id
left jon class_info c on a.class_id = c.id

北回归线 发表于 2021-2-2 01:02

selecta.id,a.username,a.level,
casea.ori_id    when '1'then '组织1' else '0' end as ,
casea.class_idwhen '1'then '班级1' else '0' end as ,
a.namefromadmin_user a,class_info b,org_info c
where a.id=b.id and a.org_id = c.org_id

bookaccount 发表于 2021-2-2 03:09

查了下, mysql 用ifnull或coalesce, ms sql server用isnull或coalesce, oracle用nvl,另外3楼的sql里,IFNULL(o.name, u.ORG_ID),name和orgid字段的类型不一样,最好改成一样,另外后面要加个 as org_id

zylz9941 发表于 2021-2-2 08:45

学习一下。

zylz9941 发表于 2021-2-2 08:46

pxhzai 发表于 2021-2-2 00:02
https://wwx.lanzoui.com/inJyEl766ch

谢谢分享
页: [1] 2
查看完整版本: SQL查询语句