从连接创建的某些列上的联合?

时间:2011-11-11 13:54:55

标签: mysql

我在工会中遇到的麻烦是你的查询表必须包含所有相同的列。有没有办法只在某些coloumns上使用联合查询?

SELECT Client.Client_ID, Client.First_Name, Client.Last_Name, Client.Company_Name from Client
union 
select Agency_Employee.Employee_ID, Agency_Employee.First_Name, Agency_Employee.Last_Name, ''
from Agency_Employee
union
select Agency_ID, '', '', Agency_Name from Admin_Agency
SELECT proj.ProjectID, A.Project_Title, B.Account_ID, B.Username, B.Access_Type FROM Project_Assigned proj

JOIN Account B
    ON proj.AccountID = B.Account_ID
JOIN Project A
    ON proj.ProjectID = A.Project_ID

WHERE proj.ProjectID = 1;

在上面我正在尝试组合创建的连接查询,该连接查询与分配给项目1的帐户匹配,并且我正在尝试从不同的表(例如客户端)中获取其他信息,例如first_name,last_name ,agency_employee。

1 个答案:

答案 0 :(得分:1)

是的。 您可以通过指定列的名称来实现它们 - 它们应该是相同的。 在你的情况下,你可以这样做:

SELECT Client.Client_ID, Client.First_Name, Client.Last_Name, Client.Company_Name from Client
union 
select Agency_Employee.Employee_ID as Client_ID, Agency_Employee.First_Name, Agency_Employee.Last_Name, '' as Company_Name
from Agency_Employee
union
select Agency_ID as Client_ID, '' as First_Name, '' as Last_Name, Agency_Name as Company_Name from Admin_Agency

我没有在您的代码中看到您希望如何将您的联合与以下查询合并,但您可以使用子查询来完成。这是一个例子:

select a.item1, b.count from table_a a
inner join (
     select item1, count(*) as count
     from table_b
     group by item1
) b on b.item1 = a.item1