2016-03-12 74 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。)