*Inner Join using Comma Syntax*/ Select E.Fname , E...

Post on 02-Nov-2020

7 views 0 download

Transcript of *Inner Join using Comma Syntax*/ Select E.Fname , E...

/*Inner Join using Comma Syntax*/

Select E.Fname, E.Lname, E.Dno, D.Dnumber

From Employee E, Department D

Where E.dno = D.Dnumber;

/*Left outer Join with On Clause*/

Select E.Fname, E.Lname, E.Dno, D.Dnumber From Department D LEFT OUTER JOIN Employee E

On D.Dnumber = E.dno;

Select D.dname, D.dnumber, E.dno, E.ssn

From Department D, Employee E where D.Dnumber = E.dno;

Select D.dnumber, Count(E.dno) From Department D, Employee E

where D.Dnumber = E.dno

Group By D.dnumber;

Select D.dnumber, Count(*)

From Department D, Employee E

where D.Dnumber = E.dno Group By D.dnumber;

Select E.dno, Count(E.dno)

From Department D, Employee E

where D.Dnumber = E.dno

Group By E.dno;

Select E.dno, Count(*)

From Department D, Employee E where D.Dnumber = E.dno

Group By E.dno;

Select D.dname, D.dnumber, E.dno, E.ssn, E.lname From Department D Left Outer Join Employee E

ON D.Dnumber = E.dno;

Select D.dnumber, Count(E.dno)

From Department D Left Outer Join Employee E

ON D.Dnumber = E.dno

Group By D.dnumber;

Select D.dnumber, Count(*) From Department D Left Outer Join Employee E

ON D.Dnumber = E.dno

Group By D.dnumber;

Select E.dno, Count(E.dno)

From Department D Left Outer Join Employee E

ON D.Dnumber = E.dno Group By E.dno;

Select E.dno, Count(*) From Department D Left Outer Join Employee E

ON D.Dnumber = E.dno

Group By E.dno;

/*Same Queries*/ Select E.ssn, Count(E.ssn)

From Works_On W, Employee E

Where W.essn = E.ssn Group By E.ssn;

Select E.ssn, Count(W.pno) From Works_On W, Employee E

Where W.essn = E.ssn

Group By E.ssn;

Select E.ssn, Count(*) From Works_On W, Employee E

Where W.essn = E.ssn

Group By E.ssn;

/*Same query*/

Select E.ssn From Works_On W, Employee E

Where W.essn = E.ssn

Group By E.ssn

Having Count(E.ssn) > 2;

Select E.ssn

From Works_On W, Employee E Where W.essn = E.ssn

Group By E.ssn

Having Count(W.pno) > 2;

Select E.ssn

From Works_On W, Employee E

Where W.essn = E.ssn Group By E.ssn

Having Count(*) > 2;

/*It returns the managers with no dependent as NULL (For 8888445555)

and the Non-manager level employees with Dependents as NULL (For 453453453) together.

HOWEVER, it returns all the repeated dept column values for all the matching

tuples to list the employee's multiple dependents (a manager and also has dependents) --> NOT a GOOD WAY */

Select D.dnumber, D. dname, D.mgrssn, dp.essn, dp.dependent_name

From Department D Full Outer Join Dependent dp ON D.mgrssn = dp.essn;

SELECT D.Dnumber, D.DName, E.FNAME, E.LNAME, S.FNAME, S.LNAME

FROM EMPLOYEE E LEFT OUTER JOIN EMPLOYEE S ON E.SuperSsn = S.SSN, DEPARTMENT D WHERE D.Dnumber = E.Dno

ORDER BY D.Dnumber, D.Dname;

Physical Query Execution Plan for the query Q:

Q:

Select E.ssn

From Works_On W, Employee E Where W.essn = E.ssn

Group By E.ssn

Having Count(E.ssn) > 2;