0

これら 2 つの SQL ステートメントの関係代数を解決するのを手伝ってくれませんか。私はそれについて私の頭を得ることができません

SELECT EMP.*
     , DEPT.DEPTNAME
     , DEPT.BUILDING
     , MANAGER.NAME DEPT_MANAGER
  FROM DEPT DEPARTMENT
     , EMPLOYEES EMP
     , EMPLOYEES MANAGER
 WHERE DEPT.DEPTMANAGERID = MANAGER.EMPID
   AND EMP.DEPTNO = DEPT.DEPTNO;

と:

SELECT rep.repname SalesRep
     , prod.productno ProdID
     , prod.productname Name
     , prod.productdesc ProdDesc
     , prod.units Unit
     , prod.productprice Price
     , paint.*
     , chem.*
     , feed.*
     , sup.repname Supervisor
  FROM products prod
     , salesreps rep
     , salesreps sup
     , paintproducts paint
     , chemicalproducts chem
     , animalfeedproducts feed
 WHERE rep.salesrepid = prod.productsalesrepid
   AND rep.supervisor = sup.salesrepid (+)
   AND prod.productno = paint.productno (+)
   AND prod.productno = chem.productno (+)
   AND prod.productno = feed.productno (+);

私は最初のもののためにこれを試しました:

π emp.*, dept.deptname, dept.building, manager.name (Department |×| deptmanagerid = empid Employees) X (Employee |×| Emp.Deptno = Dept.DeptNo Department) 

(レイアウトを変更して読みやすくする方法がわかりません)

4

2 に答える 2

0

SQL クエリ ブロックと関係代数の間の変換は簡単です。from節はデカルト積であり、where節は制限 (選択) をリストし、select節は射影であり、先ほど説明した順序で適用されます。この種のリレーショナル クエリは、文献では SPJ (select-project-join) または SPC と呼ばれます。

外部結合を使用したクエリと関係代数の間の変換は意味がありません。ウィキペディアの RA ページとは異なり、外部結合 (オラクル独自のエラーが発生しやすい構文で記述されたものは言うまでもなく) は、標準の関係代数の一部ではありません。

PS Latex は、リレーショナル代数クエリを読み取り可能にします。

于 2012-11-14T18:05:13.213 に答える
0

あなたの最初のクエリでは、マネージャーの情報を探しているような継ぎ目があります。私が誤解していれば教えてくれますが、これはどうですか:

SELECT MANAGER.*
 , DEPT.DEPTNAME
 , DEPT.BUILDING
 , DEPT_MANAGER
FROM DEPT DEPARTMENT
 , EMPLOYEES MANAGER
WHERE DEPT.DEPTMANAGERID = MANAGER.EMPID
AND MANAGER.DEPTNO = DEPT.DEPTNO;

マネージャーの従業員が必要な場合は、最初に意図したように2つのテーブルを使用する必要があります

于 2012-11-14T15:04:49.070 に答える