添付の画像に従って、「PROJECTS」、「PROJECTMANAGER」、「MANAGERS」の3つのテーブルがあります。
PROJECTSTATUSでグループ化された「PRODUCT」タイプのマネージャーによって管理されているPROJECTを一覧表示できるクエリが必要です。STATUS = 2の場合は、完了プロジェクトまたは進行中のプロジェクトとして表示されます。
結果のテーブルは、添付の画像に示すようになります。望ましい結果:http ://www.dbasupport.com/forums/attachment.php?attachmentid = 588&d = 1336691473
クエリは、任意のデータベース(MySQL / Oracle / MSSQL / DB2)で使用できるように、汎用である必要があります。
助けてください。
ところで、これは宿題ではありません... !!!! サンプルテーブルを使用しました。
私はcasewhenステートメントで試しましたが、参加する方法がわからず、同時にgroupbyを使用します。
CREATE TABLE PROJECTS
(
PROJECT_ID varchar(20),
PROJECT_NAME varchar(30),
STATUS int
);
CREATE TABLE PROJECTMANAGER
(
PROJECT_ID varchar(20),
MANAGER_ID varchar(20)
);
CREATE TABLE MANAGERS
(
MANAGER_ID varchar(20),
MANAGER_NAME varchar(20),
TYPE varchar(20)
);
INSERT INTO PROJECTS (PROJECT_ID, PROJECT_NAME, STATUS) VALUES
('project_001', 'Project 001', 0),
('project_002', 'Project 002', 1),
('project_003', 'Project 003', 2),
('project_004', 'Project 004', 0),
('project_005', 'Project 005', 2),
('project_006', 'Project 006', 0),
('project_007', 'Project 007', 1);
INSERT INTO PROJECTMANAGER (PROJECT_ID , MANAGER_ID) VALUES
('project_001', 'mgr_001'),
('project_002', 'mgr_001'),
('project_001', 'mgr_002'),
('project_002', 'mgr_003'),
('project_001', 'mgr_003'),
('project_005', 'mgr_001'),
('project_004', 'mgr_002');
INSERT INTO MANAGERS (MANAGER_ID, MANAGER_NAME, TYPE) VALUES
('mgr_001', 'Manager 001', 'PRODUCT'),
('mgr_002', 'Manager 002', 'HR'),
('mgr_003', 'Manager 003', 'PRODUCT'),
('mgr_004', 'Manager 004', 'FINANCE'),
('mgr_005', 'Manager 005', 'PRODUCT');
Resulted Table:
MANAGER_ID | MANAGER _NAME | COMPLETED_PROJECTS | IN_PROGRESS_PROJECTS |
mgr_001 | Manager 001 | 1 | 2 |
mgr_003 | Manager 003 | 0 | 1 |
mgr_005 | Manager 005 | 0 | 0 |