Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2005 Forums
 Transact-SQL (2005)
 Join Problen - no records found

Author  Topic 

snufse
Constraint Violating Yak Guru

469 Posts

Posted - 2009-01-27 : 16:59:21
I have a procedure that in certain cases does not produce output.

The problem is in the:


inner JOIN	dbo.ProductionEvent ON dbo.ProductionEvent.EventGuid = dbo.Event.EventGuid


where there is no match on field EventGuid.

For line


dbo.Event ON dbo.Event.JobGuid = dbo.Job.JobGuid


there are multiple Event records (and multiple EventGuid's) for a Job record, so what I need to do is to loop thru EventGuid's in the Event table till I find a match in the ProductionEvent table. Hope I make myself clear. Can somebody assist me? Thank you.

Stored Procedure:


SELECT	dbo.Job.CompanyJobID,
dbo.Job.ChangeDate as date,
dbo.Job.Name,
dbo.Region.CompanyRegionID,
dbo.Job.Active,
MAX(CASE dbo.SourceType.CompanySourceTypeID WHEN 'MA' THEN 'Yes' ELSE 'No' END) AS Material,
MAX(CASE dbo.SourceType.CompanySourceTypeID WHEN 'PR' THEN 'Yes' ELSE'No' END) AS Production,
MAX(CASE dbo.SourceType.CompanySourceTypeID WHEN 'SB' THEN 'Yes' ELSE'No' END) AS Sub,
MAX(CASE dbo.EquipmentLaborEvent.Hours WHEN 0 THEN 'No' ELSE 'Yes' END) AS Equipment,
MAX(CASE dbo.EmployeeLaborEvent.Hours WHEN 0 THEN 'No' ELSE 'Yes' END) AS Labor,
MAX(CASE dbo.Diary.DiaryEntry WHEN 0 THEN 'No' ELSE 'Yes' END) AS Diary
FROM dbo.Job
INNER JOIN dbo.Event ON dbo.Event.JobGuid = dbo.Job.JobGuid
inner JOIN dbo.ProductionEvent ON dbo.ProductionEvent.EventGuid = dbo.Event.EventGuid
LEFT JOIN dbo.Product ON dbo.Product.ProductGuid = dbo.ProductionEvent.ProductGuid
LEFT JOIN dbo.Item ON dbo.Item.ItemGuid = dbo.Event.ItemGuid
inner JOIN dbo.Source ON dbo.Source.SourceGuid = dbo.ProductionEvent.SourceGuid
inner JOIN dbo.SourceType ON dbo.SourceType.SourceTypeGuid = dbo.Source.SourceTypeGuid
LEFT JOIN dbo.EquipmentLaborEvent ON dbo.EquipmentLaborEvent.EventGuid = dbo.Event.EventGuid
LEFT JOIN dbo.EmployeeLaborEvent ON dbo.EmployeeLaborEvent.EventGuid = dbo.Event.EventGuid
LEFT JOIN dbo.Batch on dbo.Batch.BatchGuid = dbo.Event.EventGuid
LEFT JOIN dbo.Diary ON dbo.Diary.BatchGuid = dbo.Batch.BatchGuid
INNER JOIN #AuthorityTable AS at ON at.busunit_from <= dbo.Job.CompanyJobId
AND at.busunit_to >= dbo.Job.CompanyJobId
LEFT JOIN dbo.Region ON dbo.Region.RegionGuid = dbo.Job.RegionGuid
WHERE dbo.SourceType.CompanySourceTypeID IN ('PR', 'MA', 'SB')
AND (dbo.Job.CompanyJobID LIKE CAST(@JobNumber AS VARCHAR(10)) + '%' OR @JobNumber = 0 OR @JobNumber IS NULL)
AND (dbo.Job.Name LIKE '%' + @Text + '%' OR @Text IS NULL)
AND (dbo.Job.ChangeDate >= @DateFrom OR @DateFrom IS NULL)
AND (dbo.Job.ChangeDate <= @DateTo OR @DateTo IS NULL)
GROUP BY dbo.Job.CompanyJobID,
dbo.Job.ChangeDate,
dbo.Region.CompanyRegionID,
dbo.Job.Name,
dbo.Job.Active
ORDER BY dbo.Job.CompanyJobID



Close Window

tkizer
Almighty SQL Goddess

38200 Posts

Posted - 2009-01-27 : 18:56:43
You'll need to post sample data to make this more clear.

Tara Kizer
Microsoft MVP for Windows Server System - SQL Server
http://weblogs.sqlteam.com/tarad/

Subscribe to my blog
Go to Top of Page
   

- Advertisement -