0

作为我计算机科学教育任务的一部分,我被要求将查询从 SQL 转换为关系代数表达式。

查询背后的想法是从一个表中找到所有房间,该表具有设备类型投影仪,但没有白板-以下查询可以做到这一点,但现在我无法将其转换为关系代数表达式.

SELECT 
    e.room, e.type
FROM 
    Equipment AS e
LEFT OUTER JOIN 
    Equipment AS e2 ON e.room = e2.room AND e2.type = 'whiteboard'
WHERE 
    e.type = 'projector'
    AND e2.type IS NULL;

我很感激翻译这个问题的任何帮助,因为我是新手,通常似乎看不到这里的逻辑。

4

1 回答 1

1

逻辑如下。选择房间,从房间有投影仪的设备中输入。从有白板的设备与房间相交。只保留交叉路口有投影仪但没有白板的部分(AND e2.type IS NULL 表示在白板组中没有找到房间)

http://sketchtoy.com/50426780

改写:

find group A from group ROOM?EQUIPMENT that has projectors
find group B from group ROOM?EQUIPMENT that has whiteboards
Intersect A and B
keep the part of group A where room IDs are not found in group B
于 2013-09-20T07:43:36.587 回答