请求帮助将SQL查询转换为关系代数

时间:2013-09-20 06:43:09

标签: mysql sql relational-algebra

作为计算机科学教育任务的一部分,我被要求将查询从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;

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

1 个答案:

答案 0 :(得分: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