嵌套sql怎么办?

c9x0cxw0  于 2021-06-20  发布在  Mysql
关注(0)|答案(4)|浏览(331)

我的输入只是userid。如何合并三个表以获得区域名称。我确信我的语法是正确的
表名:userinfo userid主键
表名:userinfo\u attarea employee\u id foreign key userid reference userinfo area\u id foreign key area\u id reference personnel area
表名称:人员区域\u id主键区域名称
我试过但失败了,

SELECT areaname FROM userinfo a
INNER JOIN (SELECT *FROM userinfo_attarea b
INNER JOIN SELECT *FROM personnel_area c
ON b.areaid = c.areaid
) b ON a.userid = b.employee_id;
slwdgvem

slwdgvem1#

你的语法不正确。你在句子中不必要地使用括号 FROM 条款。子查询不使用括号。
子查询是完全不必要的。此外,表别名的选择很差(随机字母而不是表缩写),而且表名没有限定。

SELECT pa.areaname
FROM userinfo ui INNER JOIN
     userinfo_attarea uia
     ON uia.employee_id = ui.userid INNER JOIN
     personnel_area pa
     ON uia.areaid = pa.areaid;
eoigrqb6

eoigrqb62#

正确的语法是:

SELECT areaname FROM userinfo a
INNER JOIN (
    SELECT * FROM userinfo_attarea b
    INNER JOIN personnel_area c
    ON b.areaid = c.areaid
) b ON a.userid = b.employee_id;

这个 SLELECT * FROM 第三行是不必要的。
另外,我强烈建议正确的缩进和空格的正确使用:)( * FROM 而不是 *FROM ). 它将提高代码的清晰度。
此外,还需要注意列名,因为有时它们可能模棱两可,所以应该在内部查询中显式列出它们,并为它们提供唯一的别名。

qaxu7uf2

qaxu7uf23#

我想你这个问题会对你有帮助的

select areaname from personel_area pa inner join
userinfo_attarea ut on pa.area_id=ut.area_id
inner join userinfo ui on ut.employee_id=ui.userid
bpsygsoo

bpsygsoo4#

选择b.areaname from userinfo a inner join(选择c.areaname from(选择from userinfo\u attarea)b inner join(选择from personnel\u area)c on b.areaid=c.areaid)b on a.userid=b.employee\u id;

相关问题