: 프로젝트와 개발자 사이의 relantionship은 한 - 많은SQL 연합
create table DEVELOPER(id int(4), lastname varchar(40), project_id int(4));
create table MANAGER(id int(4), lastname varchar(40), project_id int(4));
create table PROJECT(id int(4), name varchar(40));
이며, PROJECT와 MANAGER 사이의 관계는 일대일입니다.
데이터베이스에 저장된 모든 성은 고유합니다. 관리자는 동일한 프로젝트의 개발자가 될 수 있습니다. (이 경우 두 개의 테이블에 저장된 그의 데이터). |
ID :
나는 다음과 같은 형식으로 내 데이터베이스에서 특정 프로젝트의 모든 개발자의 목록과 관리자를 수신 할 성 |
SELECT id, lastname, false AS isManager FROM developer WHERE project_id = 314
UNION
SELECT id, lastname true AS isManager FROM manager WHERE project_id = 314
그러나 그는 또한 특정 프로젝트의 개발자 인 경우 나 관리자의 두 개의 데이터 행을 갖고 싶어하지 않습니다 책임자에게 isManager
는 나는 다음과 같은 쿼리를 맞는 것 같아! 나는 property isManager가 참인 선을 떠나고 싶다. 이 문제를 해결하려면 적절한 쿼리를 제안하십시오!
이 두 테이블 사이의 관계 –
'developer'와'manager'는 두 개의 서로 다른 테이블이 아니어야합니다. 'person (id, firstname, lastname)'과 'project_member (person_id, project_id, project_role)'와 같은 프로젝트에서 사람의 역할을 나타내는 하나의 테이블'person'과 그 사람의 역할을 나타내는 링크 테이블을 가져야합니다. –
@a_horse_with_no_name, I 너와 절대적으로 동의한다. 그러나 제 상황에서는이 db 구조로 작업해야합니다. – Alex