2016-03-12 36 views
1
SELECT F.PNAME, SUM(F.QTY)        
FROM (SELECT P.*, S.QTY 
     FROM (SELECT PNUM, PNAME 
      FROM PARTS) P, 
       (SELECT PNUM, QTY 
       FROM SHIPMENTS) S 
     WHERE P.PNUM = S.PNUM) F 
GROUP BY F.PNAME 

注意这里有一个P. * 我不认为具有(P. *,s.qty)下标的π在关系代数中是合法的。我将如何去做这件事?将SQL转换为关系代数时,如何表示符号*?

感谢您的回答。

+0

请给出你应该使用的关系代数版本的参考。 – philipxy

回答

3

你没有。

关系代数没有任何命名空间的概念;它没有意识到P.FOOP.BAR有任何共同点。 (实际上,在编写关系代数时,通常的做法是省略P.,如果这会导致任何命名冲突,则使用“重命名”操作来根据需要重命名属性,例如P_FOOP_BAR。)