2011-11-11 5 views
0

私がユニオンで抱えていた問題は、クエリのテーブルがすべて同じ列でなければならないということです。特定のcoloumnsのみで結合を使ってクエリを行う方法はありますか?上記の私が異なるから、これらの口座番号からLAST_NAME、1をプロジェクトに割り当てられたアカウントと一致し、組合と私は、first_nameのような付加的な情報を取得しようとしている作成された結合問合せを結合しようとしている上記で結合から作成された特定の列の結合

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; 

クライアント、agency_employeeなどのテーブル。

+1

@SabeenMalik問題は列名ではなく、列数です。 – Romain

+0

質問の点では、わかりません。あなたは(明らかに)3つのソーステーブルのサンプルテーブルデータと、得たい結果セットを提供してください。 – Romain

+0

@Romain thanks MySQLは最初の選択からの名前を使用していることを完全に忘れてしまった! –

答えて

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 
+0

私が抱えている問題は、これをクエリで作成された結合にどのように追加するかです。 table_a b.item1上 インナー参加( ITEM1 によってtable_b グループからのカウント として)(カウント*、ITEM1を選択)Bから 選択a.item1、b.count: – Malcr001

+0

あなたはこのようなsub_queryとしてそれを行うことができます= a.item1 –

関連する問題