2014-01-21 2 views
1

나는 C#과 직원 및 상사 목록이있는 Access 데이터베이스를 사용하여 응용 프로그램을 작성하고 있습니다. 나는 다음과 같이 보입니다 :데이터베이스의 여러 열에 distinc 쿼리

[Employee name] [Boss #1 name] [Boss #2 name] 
    John   Jake   Margaret 
    Jane   Jake   Tony  
    Bob   Mike   Tony 
    Marty   Mike   Margaret 

중복 된 이름없이 모든 이름을 표시하도록 데이터베이스를 쿼리 할 수 ​​있습니까?

John 
Jane 
Bob 
Marty 
Jake 
Mike 
Margaret 
Tony 

감사합니다.

+0

이름 만 원한다면 모든 테이블에서 Distinct를 선택해야합니다. 나는 Access에서 그것을하는 방법을 모르지만, 여기에 시작이있다 : http://stackoverflow.com/questions/15310782/how-to-select-distinct-value-from-multiple-tables – Brandon

+0

왜 안 그래? 상사가 참조하는 직원 테이블이 있습니까? 그런 다음 Employee 테이블의 쿼리를 가져올 수 있습니다. – enderland

+0

이들은 모두 같은 테이블에서 가져온 것이므로 다른 열만입니다. – ElCapitaine

답변

0

당신은이 : 이것에 대한

는 SQL 쿼리 수 (UNION 이미 뚜렷한 않는다는 것을 명심) 것 :

SELECT [Employee Name] FROM [tablename] 
UNION 
SELECT [Boss #1 Name] FROM [tablename] 
UNION 
SELECT [Boss #2 Name] FROM [tablename] 

나는 SQL보기라는 쿼리 작성자의 탭에서 Access에서 SQL을 실행할 수 있다고 생각합니다. UNION을 Access에서 사용하는 방법을 확인할 수도 있습니다.

[Employee] 
    -ID (primary key identity) 
    -Name 

[EmployeeSupervisor] 
    -EmployeeId (foreign key to Employee.ID) (part of PK) 
    -SupervisorId (foreign key to Employee.ID) (part of PK) 

또는 모든 직원이 다음 정확히 두 개의 상사가있는 경우 당신이 할 수 있습니다 :

[Employee] 
    -ID (primary key identity) 
    -Name 

[EmployeeSupervisor] 
    -EmployeeId (foreign key to Employee.ID) (PK) 
    -Supervisor1Id (foreign key to Employee.ID) 
    -Supervisor2Id (foreign key to Empoyee.ID) 

이 오래 지속 것을 만들 계획하는 경우, 당신은 무엇을 할 수 있는지 두 테이블을 만드는 것입니다

1

DB 스키마를 실제로 변경해야합니다. 적절한 관계 기술을 사용하지 않는 것 같습니다.

아무튼 ... 해결책은 각 열을 결합하고 고유 한 것을 선택하는 것입니다.

SELECT DISTINCT n 
FROM (SELECT employee_name AS n 
     FROM table_1 
     UNION 
     SELECT boss_1_name AS n 
     FROM table_1 
     UNION 
     SELECT boss_2_name AS n 
     FROM table_1) names; 

이것은 지금 사용할 수있는 빠른 솔루션이지만 장기간 당신은 실제로 스키마를 변경해야합니다. 당신은 그냥 기존 Access 데이터베이스에 대해 쿼리를 실행하려는 경우

+0

+1 및 해당 +1이 가능한지 확인하십시오. – GolezTrol

관련 문제