SQL - 在子查询中传递列

时间:2021-05-04 10:49:05

标签: mysql sql

我的命令:

Select sobe.Id, sobe.Naziv, sobe.Opis, sobe.Kat, (Select Group_CONCAT(studenti.Ime,studenti.Prezime) ImePrezime FROM studentsoba LEFT JOIN studenti ON studentsoba.Id_Sobe=sobe.Id AND studenti.JMBAG = studentsoba.JMBAG) AS ImePrezime from Sobe

这给了我这个错误:

<块引用>

1054 - 'on 子句'中的未知列'sobe.Id'

我知道问题出在哪里,但我不知道如何解决它。 我想在此子查询中传递 sobe.Id

(Select Group_CONCAT(studenti.Ime,studenti.Prezime) ImePrezime FROM studentsoba LEFT JOIN studenti ON studentsoba.Id_Sobe=sobe.Id AND studenti.JMBAG = studentsoba.JMBAG)

我想查看那个房间里有哪些学生。 soba这个词是房间的意思,JMBAG就像每个学生的个人号码

1 个答案:

答案 0 :(得分:1)

尝试将其移至 WHERE 子句:

Select s.Id, sobe.Naziv, s.Opis, s.Kat,
       (Select Group_CONCAT(si.Ime, si.Prezime) as ImePrezime
        from studentsoba ss LEFT JOIN
             studenti si
             on si.JMBAG = ss.JMBAG
        where ss.Id_Sobe = s.Id 
       ) AS ImePrezime
from Sobe s;

相关子查询应该没问题。我想相关性子句不能在 on 子句中——我通常把它放在 where 子句中。

另请注意,我引入了表别名,以便查询更易于编写和阅读。

相关问题