0

抱歉,我想不出更好的标题(或任何有意义的标题)。

我一直在尝试编写一个 SQL 查询,我可以在其中检索与学生 Jaci Walker 具有相同级别值的学生的姓名。

表格的格式为:

STUDENT(id, Lname, Fname, Level, Sex, DOB, Street, Suburb, City, Postcode, State)

所以我知道Lname (Walker)andFname (Jaci)我需要找到 Jaci Walker 的级别,然后输出具有相同级别的名称列表。

--Find Level of Jaci Walker
SELECT S.Fname, S.Name, S.Level
FROM Student S
WHERE S.Fname="Jaci" AND S.Lname="Walker"
GROUP BY S.Fname, S.Lname, S.Level;

我已经想出了如何检索 的级别Jaci Walker,但不知道如何将其应用于另一个查询。


感谢大家的帮助,在将其余查询添加到其中时,我只是卡住了一点。

https://www.dropbox.com/s/3ws93pp1vk40awg/img.jpg

SELECT S.Fname, S.LName
FROM Student S, Enrollment E, CourseSection CS, Location L
WHERE S.S_id = E.S_id
AND E.C_SE_ID = CS.C_SE_id
AND L.Loc_id = CS.Loc_ID
AND S.S_Level = (SELECT S.S_Level FROM Student S WHERE S.S_Fname = "Jaci" AND S.S_Lname = "Walker")
AND CS.C_SE_id = (SELECT CS.C_SE_id FROM CourseSection CS WHERE ?)
AND L.Loc_id = (SELECT L.Blodg_code FROM Location L WHERE L.Blodg_code = "BG");
4

5 回答 5

1

试试这个 :

SELECT S.Fname, S.Name, S.Level
FROM Student S
WHERE S.Level = 
    (SELECT Level
     FROM Student 
     WHERE Fname="Jaci" AND Lname="Walker"
    )

但是你必须确保只有一个叫 Jaci Walker 的学生......

于 2013-05-24T11:09:30.250 回答
1

您可以将查询重新用作子查询以查找具有相同级别的其他条目。

SELECT Fname, Name
FROM Student
WHERE Level = (
    SELECT Level FROM Student S WHERE S.Fname="Jaci" AND S.Lname="Walker")
于 2013-05-24T11:09:48.923 回答
1

您不需要对结果进行分组。

试试这个

Select Fname,Lname from Student 
where Level=(Select Level 
             from Student 
             where Fname='Jaci' AND Lname='Walker' );
于 2013-05-24T11:13:54.960 回答
0

我不认为你需要 group by 和 all for the same ...

简单地,

SELECT S.Fname, S.Name, S.Level FROM Student S WHERE S.LEVEL LIKE (SELECT LEVEL FROM STUDENT WHERE Fname="Jaci" AND Lname="Walker");

你在找一样的吗?

于 2013-05-24T11:09:23.457 回答
0

试试这个:

SELECT S.Fname, S.Name, S.Level FROM Student s 
WHERE Level = 
(SELECT TOP 1 Level FROM Student WHERE Fname = "Jaci" and Lname = "Walker")

如果您不使用 TOP 1,则如果您的数据中有多个“Jaci Walker”,则此查询将失败。

于 2013-05-24T11:10:54.490 回答