2016-12-10 12 views
0

テーブルからデータを取得できませんでした。SQLビューテーブルの内部結合 'と' statment

プロジェクトには複数の製品がありますが、1つはプライマリ(PrimaryProduct)です。

PrimaryProduct = Product。

製品は見積もりの​​一部です。

各プロジェクトは乗組員に割り当てられます。

基本的に、私がcrewidを取ることができるメインテーブルは、tblProjectLabourScheduleとProjectEstimateIDです。

私は、プロジェクトに割り当てられているがプライマリプロダクトだけに割り当てられているクルーを取得する必要があります。私の質問は既にプロジェクトの主な製品を引き出していますが、乗組員を得ることができません。私の現在のスクリプトは怒鳴るですが、今のプロジェクト(主+副製品)に割り当てられているすべてのクルーになってイム:ここ

を私のテーブルです:

    tblProject: 
        ProjectID 
        PrimaryProductID 

       tblProduct: 
        ProductID 

       tblProjectEstimate: 
        ProjectEstimateID 
        ProjectID 
        EstimateID 
        CrewID 

       tblProjectLabourSchedule: 
        ProjectLabourScheduleID 
        ProjectID 
        ProjectEstimateID << 
        CrewLeaderID 

       tblCrew: 
        CrewID 
        FirstName 

       tblServiceTicket: 
        ServiceTicketID 
        ProjectID 

       tblEstimateDetail: 
        EstimateDetailID 
        EstimateID 
        ActivityID 
        ProductID 

       tblCrewLeaderMember: 
        CrewLeaderMemberID 
        CrewLeaderID 
        CrewID 

スクリプト:以下の

SELECT tblProjectLabourSchedule.CrewLeaderID 

    FROM tblServiceTicket INNER JOIN 

     //gets primary product for the project 

     tblProject on tblServiceTicket.ProjectID = tblProject.ProjectID inner join 
     tblProduct on tblProject.PrimaryProductID = tblProduct.ProductID 

     /// gets crews for the products 

     tblProjectEstimate on tblServiceTicket.ProjectID = tblProjectEstimate.ProjectID inner join 
     tblProjectLabourSchedule on tblProjectEstimate.ProjectEstimateID = tblProjectLabourSchedule.ProjectEstimateID 
+0

tblProjectEstimateでProjectEstimateIDとEstimateIDの違いは何ですか? – DVT

+0

クルーをプロジェクト、製品、見積もりに接続するために必要なテーブルは、スクリプトにないtblEstimateDetailです。そのテーブルに参加すると、結果を得ることができるはずです。 – Anand

答えて

0

プライマリ製品だけのためのcrewIDを提供します。必要に応じて追加のテーブルに参加できます。

SELECT e.CrewID 
FROM tblProjectEstimate e 
INNER JOIN tblProject p ON p.ProjectID = e.ProjectID 
INNER JOIN tblEstimateDetail d ON e.ProjectEstimateID = d.EstimateID AND d.ProductID = p.PrimaryProductID 

UPDATE:左を使用して がtblEstimateDetailに参加するには、基本的にすべてのプロジェクトは関係なく、主要製品の推定リストが表示されます。

これを試すことができますか?これにより、主要プロダクトが見積もりプロジェクトと一致しない見積もり詳細はすべて除外されます。 UPDATED

FROM 
tblServiceTicket s  
INNER JOIN tblProjectEstimate e on s.ProjectID = e.ProjectID 
left join tblProject as p ON p.ProjectID = e.ProjectID 
left join tblEstimateDetail as c ON e.ProjectEstimateID = c.EstimateID AND c.ProductID = p.PrimaryProductID 
WHERE c.ProjectEstimateID IS NOT NULL 
0

@Bhaskarを、ここに私のために働いたクエリは次のとおりです。

tblProjectEstimate as e on tblServiceTicket.ProjectID = e.ProjectID and e.IsPrimary = 'True' left join 
tblCrew on e.CrewID = ptsweb.tblCrew.CrewID