Presentation is loading. Please wait.

Presentation is loading. Please wait.

SQL - miscellaneous D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 1.

Similar presentations


Presentation on theme: "SQL - miscellaneous D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 1."— Presentation transcript:

1 SQL - miscellaneous D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 1

2 Given the Database SPJ Schema G.Tuparov INF 280 Database Systems: SQL – miscellaneous 2 Notes: 1. 'S' means Supplier; 'P' – Part; 'J' – Project; 'SPJ' – Supplies (cross table of the three) 2. Attribute with name as 'X_ID' is primary key 3. Equally named attributes, with names as “X_ID”, define referential integrity constraints (foreign key).

3 Given the Database SPJ State S (Supplier) SPJ S_IDSNameStatusCity S_IDP_IDJ_IDQuantity S1Smith20London S1P1J1200 S2Jones10Paris S1P1J4700 S3Blake30Paris S2P3J1400 S4Clark20London S2P3J2200 S5Adams30Athens S2P3J3200 S2P3J4500 P (Part) S2P3J5600 P_IDPNameColourWeightCity S2P3J6400 P1NutRed12London S2P3J7800 P2BoltGreen17Paris S2P5J2100 P3ScrewBlue17Rome S3P3J1200 P4ScrewRed14London S3P4J2500 P5CamBlue12Paris S4P6J3300 P6CogRed19London S4P6J7300 S5P2J2200 J (Project) S5P2J4100 J_IDJNameCity S5P5J5500 J1SorterParis S5P5J7100 J2PunchRome S5P6J2200 J3ReaderAthens S5P1J4100 J4ConsoleAthens S5P3J4200 J5CollatorLondon S5P4J4800 J6TerminalOslo S5P5J4400 J7TapeLondon S5P6J4500 D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 3 Notes: 1. 'S' means Supplier; 'P' – Part; 'J' – Project; 'SPJ' – Supplies (cross table of the three) 2. Attribute with name as 'X_ID' is primary key 3. Equally named attributes, with names as “X_ID”, define referential integrity constraints (foreign key).

4 Task 1 (Oracle 11g/MySQL 5.5) 1. List suppliers (S.*) with cities, where there are no parts. 'Sub Query Solution SELECT * FROM S WHERE City NOT IN (SELECT DISTINCT City FROM P); --------------------------------- OR ----------------------------- Result: 'Correlated Query Solution D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 4 SELECT * FROM S WHERE NOT EXISTS (SELECT DISTINCT City FROM P WHERE P.City = S.City);

5 Task 2 (MySQL 5.5/Oracle 11g) 2. List projects (P.*), which are not supplied with any 'Red' part by any supplier from 'London'. (Note: Inner join, using foreign keys) Result: D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 5 ( SELECT J_ID FROM (P INNER JOIN SPJ USING (P _ID )) INNER JOIN S USING (S _ID ) WHERE P.Colour = ' Red' AND S.City = 'London'); SELECT * FROM J WHERE J_ID NOT IN (SELECT J_ID FROM P, SPJ, S WHERE SPJ.P_ID = P.P_ID AND SPJ.S_ID = S.S_ID AND P.Colour = 'Red' AND S.City = 'London');

6 Task 3 (Oracle 11g/MySQL 5.5) 3. List all cities, where the company operates (where at least one supplier, part, or project is located). D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 6 Result: Oracle 11g MySQL 5.5 SELECT DISTINCT City FROM J UNION SELECT DISTINCT City FROM P UNION SELECT DISTINCT City FROM S;

7 Task 4 (Oracle 11g/MySQL 5.5) 4. List projects (J.*) with cities, where there are no suppliers. --------------------OR--------------------- D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 7 SELECT * FROM J WHERE City NOT IN (SELECT DISTINCT City FROM S); SELECT * FROM J WHERE NOT EXISTS (SELECT DISTINCT City FROM S WHERE S.City = J.City); Result: Oracle 11g MySQL 5.5

8 Task 5 (MySQL 5.5/Oracle 11g) 5. List projects (J.*) supplied entirely by supplier 'S2' SELECT * FROM J WHERE NOT EXISTS (SELECT * FROM SPJ WHERE SPJ.J_ID = J.J_ID AND NOT (SPJ.S_ID = 'S2')); D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 8 Result: MySQL 5.5

9 Task 6 (Oracle 11g/MySQL 5.5) 6. List all supplies (SPJ.*) performed in London (either project or supplier is located in London). SELECT SPJ.S_ID, SPJ.P_ID, SPJ.J_ID, SPJ.Quantity FROM SPJ INNER JOIN S ON SPJ.S_ID=S.S_ID WHERE S.City = 'London' UNION SELECT SPJ.S_ID, SPJ.P_ID, SPJ.J_ID, SPJ.Quantity FROM SPJ INNER JOIN J ON SPJ.J_ID=J.J_ID WHERE J.City = 'London' ORDER BY 1, 2, 3; D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 9 Oracle 11g MySQL 5.5

10 7. List parts (P.*) with cities, where there are no suppliers. ----------------- OR ----------------------------- Task 7 (Oracle 11g/MySQL 5.5) D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 10 Oracle 11g MySQL 5.5 SELECT * FROM P WHERE City NOT IN (SELECT DISTINCT City FROM S); SELECT * FROM P WHERE NOT EXISTS (SELECT DISTINCT City FROM S WHERE P.City = S.City);

11 Task 8 (Oracle 11g/MySQL 5.5) 8. List parts (P.*) supplied to all projects in London. SELECT * FROM P WHERE NOT EXISTS ( SELECT * FROM J WHERE J.City = 'London' AND NOT EXISTS (SELECT * FROM SPJ WHERE SPJ.P_ID = P.P_ID AND SPJ.J_ID = J.J_ID) ); D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 11 Oracle 11g MySQL 5.5

12 Task 9 (Oracle 11g/MySQL 5.5) 9. List all cities, where both a supplier and a project are located. D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 12 MySQL 5.5 Solution: SELECT DISTINCT City FROM S INNER JOIN J USING (City) ORDER BY 1; Oracle 11g Solution: SELECT DISTINCT City FROM S INTERSECT SELECT DISTINCT City FROM J;

13 Task 10 (Oracle 11g/MySQL 5.5) 10. List suppliers (S.*) with cities, where there are no projects. ---------------------- Or ---------------------------- D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 13 SELECT * FROM S WHERE NOT EXISTS (SELECT DISTINCT City FROM J WHERE J.City = S.City); SELECT * FROM S WHERE City NOT IN (SELECT DISTINCT City FROM J ); No Data Found

14 Task 12 (Oracle 11g/MySQL 5.5) 12. List all projects (J.*), which are not supplied by any (at least one) part from London. SELECT * FROM J WHERE NOT EXISTS (SELECT * FROM SPJ INNER JOIN P USING (P_ID) WHERE P.City = 'London' ANDSPJ.J_ID = J.J_ID); D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 14


Download ppt "SQL - miscellaneous D. Christozov / G.Tuparov INF 280 Database Systems: SQL – miscellaneous 1."

Similar presentations


Ads by Google