作为计算机科学教育任务的一部分,我被要求将查询从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;
我很感激任何帮助翻译这个,因为我是新手,而且通常似乎没有看到这里的逻辑。
答案 0 :(得分:1)
逻辑如下。 选择房间,从房间有投影仪的设备输入。 与具有白板的设备的房间相交。 仅保留具有投影仪但没有白板的交叉点部分(AND e2.type IS NULL表示在白板组中找不到房间)
措词:
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