关于SQL练习中SQL查询的问题(无法找到列)

时间:2015-09-18 05:49:26

标签: sql sqlite

我正在做一些SQL练习,其要求如下:

对于学生A喜欢学生B的每种情况,但我们没有关于B喜欢的人的信息(也就是说,B在Likes表中没有出现为ID1),请返回A和B的姓名和成绩。

我有关于架构的参考:https://lagunita.stanford.edu/c4x/DB/SQL/asset/socialdata.html

我的查询如下:

select 
    h1.name, h1.grade, h2.name, h2.grade
from 
    highschooler h1, highschooler h2, likes l1, likes l2
where 
    h1.id in (select id1 
              from l1 
              where not exists (select id2 from l1 where id2 = id1)) 
    and h2.id in (select id2 
                  from l2 
                  where not exists (select id2 from l2 where id2 = id1))

SQL是在html服务器中构建的,它一直告诉我他们无法找到列l1。我的代码中是否存在任何逻辑错误,有人可以告诉它有什么问题吗?谢谢!

1 个答案:

答案 0 :(得分:1)

你应该更好地使用连接...用这样的东西拍摄

Select HS1.ID, HS1.Name, HS1.grade,
       LI1.ID1, LI1.ID2,
       HS2.ID, HS2.Name, HS2.Grade
from Highschooler HS1
join Likes LI1 on HS1.ID = LI1.ID1 
JOIN Highschooler HS2 on LI1.ID2 = HS2.id
LEFT JOIN Likes LI2 on HS2.ID = LI2.ID1
where LI2.ID1 IS NULL

基本上你只是加入这些表格,最后两行会给你你所要求的......“但是我们没有关于B喜欢的人的信息(也就是说,B在Likes表中没有显示为ID1)” ...看看联接并修复此查询...我只是看了一眼问题,指出你正确的方向