2012-11-14 4 views
0

누군가이 두 가지 SQL 문에 대한 관계형 대수를 계산할 수있게 도와 줄 수 있습니까? 나는 그것을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) 

(죄송합니다 어떻게 그렇게 레이아웃을 변경하는 방법 아무 생각이 없다 읽을 수있는 것처럼 보입니다) 원격으로도 제대로 작동하는지, 두 번째로는 어디서부터 시작해야할지 모릅니다.

+0

쿼리를 변환하려고 시도 했습니까? 시도한 것을 왜 보여 주 었는지, 그리고 왜 문제가 있는지, 그리고 사람들에게 당신을 위해 그것을 변환하도록 요청하면 더 좋을 것입니다. – Taryn

+0

@bluefeet이 첫 번째 시도했습니다 : π emp. *, dept.deptname, dept.building, manager.name (부서 | × | deptmanagerid = empid 종업원) X (종업원 | × | Emp.Deptno = 부서. DeptNo Department) (미안, 레이아웃을 어떻게 바꿀 수 있을지 모르겠다.) 원격지에서도 똑같은 것을 알 수 없다. 두 번째 질문은 – ToniHopkins

답변

0

은 첫 번째 쿼리의 경우, 같은 솔기 내가 missunderstood 경우 말해, 관리자의 정보를 찾고 있지만 방법을 이것에 대해 :

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

당신은 관리자의 직원을 원하는 경우에, 당신은 두 개의 테이블을 사용해야합니다 당신은 처음부터 의도처럼

+0

일 수있다. 조금 더 많은 정보를 제공하십시오 –

+0

Im 그냥 쿼리를 관계형 합의로 변환하려고 했으므로 π emp. *, dept.deptname, dept.building, manager.name (Department | × | deptmanagerid = empid Employees) X (Employee | × | Emp.Deptno = Dept.DeptNo Department) (죄송하므로 레이아웃을 어떻게 바꿀 수 있는지 잘 모르는 경우) – ToniHopkins

0

SQL 쿼리 블록과 관계 대수 사이의 변환은 간단 다음 from 절은 where 절 (선택 일명) 제한을 직교 제품을 나열하고, select 절은 적용, 투사입니다 나는 단지 설명했다. 이러한 종류의 관계형 쿼리는 문헌에서 SPJ (select-project-join) 또는 SPC라고합니다.

외부 조인과 관계형 대수를 사용하는 쿼리 간의 변환은 의미가 없습니다. wikipedia RA page과는 달리 외부 조인 (oracle 독점 오류가 발생하기 쉬운 구문으로 작성된 것은 제외)은 표준 관계형 대수의 일부가 아닙니다. .

P. 라텍스는 관계형 대수 쿼리를 읽을 수있게 만듭니다.