我正在使用C#和Access数据库构建一个应用程序,其中有一个员工及其老板的列表。我看起来有点像这样:
[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 :(得分:1)
您应该真正考虑更改DB Schema。看起来你没有使用适当的关系技术。
无论如何......一个解决方案就是联合每一列并选择不同的。
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;
这是一个现在可以使用的快速解决方案,但从长远来看,您应该真正考虑更改架构。
答案 1 :(得分:0)
如果您只是尝试针对某些现有的Access数据库运行查询,那么您可以:
对此的SQL查询将是(请记住,UNION已经做了明确的分析):
SELECT [Employee Name] FROM [tablename]
UNION
SELECT [Boss #1 Name] FROM [tablename]
UNION
SELECT [Boss #2 Name] FROM [tablename]
我认为您可以在名为SQL视图的查询创建器的选项卡中在Access中运行SQL。您还可以检查如何在Access中执行UNION,因为这是您要使用的。
如果您打算将其作为一个持久的东西,那么您可以做的是创建两个表:
[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)