[英]Getting multiple results in a single query
我需要知道学生-学生证,名字,姓氏。 那些没有在特定的礼堂看到任何事件。 我必须按姓氏升序列出这些学生(通过一个查询)。 两次运行查询,一次运行显示礼堂“伦敦剧院”,第二次运行显示“布伦特伍德音乐厅”的结果。
我不知道这第一和第二轮意味着什么。 另外,请检查以下内容是否可以首次运行。 我正在考虑创建一个视图并存储第一个运行,并使用“ Brentwood Hall”编写相同的查询并将其存储在第二个视图中。 但是,如何在同一查询中显示2个视图呢?
SELECT op.StudentID
, s.FirstName
, s.LastName
FROM auditorium a
JOIN audievent e
ON a.auditoriumID = e.AuditoriumID
JOIN reserver r
ON e.EventID = r.EventID
JOIN OrderProcessor op
ON r.OrderID = op.OrderID
JOIN Student s
ON op.StudentID = s.StudentID
WHERE op.StudentID NOT IN ( SELECT DISTINCT op.StudentID
FROM OrderProcessor op
LEFT
JOIN reserver r
ON op.OrderID = r.OrderID
LEFT
JOIN AudiEvent e
ON r.AuditoriumID = e.AuditoriumID
WHERE e.EventID NOT IN ( SELECT EventID FROM reserver)
)
AND a.AuditoriumName = 'London Theatre'
GROUP
BY op.StudentID;
输出: -
StudentID FirstName LastName ID1 Andy Hall ID2 Andy Halls ID3 Mush Peters ID4 Garry Hiegl
输入: -
礼堂
AudiID AudiName Audi01 London Theatre Audi02 Brentwood Hall Audi03 County Hall
AudiEvent
EventID AudiID 1 Audi01 2 Audi01 3 Audi01 4 Audi01 5 Audi01 6 Audi01 7 Audi01 8 Audi01 9 Audi01 10 Audi01 11 Audi02 12 Audi02 13 Audi02 14 Audi02 15 Audi02 16 Audi03 17 Audi03 18 Audi03 19 Audi03 20 Audi03
储库
ReserverID OrderID AudiID EventID 1 1 Audi01 1 2 1 Audi01 2 3 2 Audi01 3 4 2 Audi01 4 5 2 Audi02 14 6 3 Audi02 15 7 3 Audi02 11 8 4 Audi03 18 9 4 Audi03 19 10 4 Audi03 20
订单处理器
OrderID StudentID 1 ID01 2 ID02 3 ID03 4 ID04
学生
StudentID FirstName LastName ID1 Andy Hall ID2 Andy Halls ID3 Mush Peters ID4 Garry Hiegl
正如@wildplasser提到的, NOT EXISTS
非常适合:
SELECT studentId, student.firstName, student.lastName
FROM Student
WHERE NOT EXISTS (SELECT 1
FROM OrderProcessor
JOIN Reserver
ON Reserver.orderId = OrderProcessor.orderId
JOIN AudiEvent
ON AudiEvent.eventId = Reserver.eventId
JOIN Auditorium
ON Auditorium.audiId = AudiEvent.audiId
AND Auditorium.audiName = 'London Theatre'
WHERE OrderProcessor.studentId = Student.studentId)
(工作的SQL Fiddle示例 )
让未看过'Brentwood Hall'
活动的学生得到必要的改变,留给读者练习。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.