SQL 视图表内部连接'and'语句



我坚持从表中获取一些数据。

项目有多个产品,但一种是主要产品(主要产品)。

priendar product =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

以下将为您提供仅针对主要产品的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

更新:与tblestimatedEtail一起使用左连接,无论主要产品如何,都将列出所有项目估计。

您可以尝试一下吗?这将排除主要产品与估计项目不匹配的任何估计细节。

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 

更新:

@bhaskar,这是对我有用的查询:

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

最新更新