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)
 Cross join error!!

Author  Topic 

Sep410
Posting Yak Master

117 Posts

Posted - 2008-11-13 : 17:48:33
Hi all,
Please help me with this error: Incorrect syntax near the keyword 'Cross'.
Incorrect syntax near s.


SELECT     TOP (100) PERCENT dbo.tbl_Case.CaseIDText AS CaseID, tbl_Client_1.FirstName AS Initiator, tbl_Client_1.Role, 
dbo.tbl_City.CitDescription + ',' + dbo.tbl_Province.ProvDescription + ' ,' + dbo.tbl_ClientInfo.PostalCode AS City, dbo.tbl_ClientInfo.Address,
dbo.tbl_Worker.WorDescription AS CaseWorker, dbo.tbl_Case.OpenDate, dbo.tbl_Closure.CloseDate, '' AS Second
FROM dbo.tbl_Case LEFT OUTER JOIN
dbo.tbl_Closure ON dbo.tbl_Case.CaseID = dbo.tbl_Closure.CaseID LEFT OUTER JOIN
dbo.tbl_Worker ON dbo.tbl_Case.CaseWorkerID = dbo.tbl_Worker.WorkerID LEFT OUTER JOIN
dbo.tbl_Client AS tbl_Client_1 LEFT OUTER JOIN
dbo.tbl_Province RIGHT OUTER JOIN
dbo.tbl_ClientInfo ON dbo.tbl_Province.ProvinceID = dbo.tbl_ClientInfo.ProvinceID RIGHT OUTER JOIN
dbo.tbl_City ON dbo.tbl_ClientInfo.CityID = dbo.tbl_City.CityID ON tbl_Client_1.ClientID = dbo.tbl_ClientInfo.ClientID ON
dbo.tbl_Case.CaseID = tbl_Client_1.CaseID
WHERE (tbl_Client_1.Role = N'Ini') AND (dbo.tbl_Case.CaseIDText = '00-4106') CROSS JOIN
(SELECT dbo.tbl_Client.FirstName
FROM dbo.tbl_Case AS c LEFT OUTER JOIN
dbo.tbl_Client ON c.CaseID = dbo.tbl_Client.CaseID
WHERE (dbo.tbl_Client.Role = N'Sec') AND (c.CaseIDText = '00-4106')) S


I need to cross join this two select and I don't know why I have this error!

Thanks,

Sep

Lamprey
Master Smack Fu Yak Hacker

4614 Posts

Posted - 2008-11-13 : 19:02:23
There are seveal things wrong:
SELECT
TOP(100) PERCENT dbo.tbl_Case.CaseIDText AS CaseID,
tbl_Client_1.FirstName AS Initiator,
tbl_Client_1.Role,
dbo.tbl_City.CitDescription + ',' + dbo.tbl_Province.ProvDescription + ' ,' + dbo.tbl_ClientInfo.PostalCode AS City,
dbo.tbl_ClientInfo.Address,
dbo.tbl_Worker.WorDescription AS CaseWorker,
dbo.tbl_Case.OpenDate,
dbo.tbl_Closure.CloseDate,
'' AS Second
FROM
dbo.tbl_Case
LEFT OUTER JOIN
dbo.tbl_Closure
ON dbo.tbl_Case.CaseID = dbo.tbl_Closure.CaseID
LEFT OUTER JOIN
dbo.tbl_Worker
ON dbo.tbl_Case.CaseWorkerID = dbo.tbl_Worker.WorkerID
LEFT OUTER JOIN
dbo.tbl_Client AS tbl_Client_1
ON --??
LEFT OUTER JOIN
dbo.tbl_Province
ON --??
RIGHT OUTER JOIN
dbo.tbl_ClientInfo
ON dbo.tbl_Province.ProvinceID = dbo.tbl_ClientInfo.ProvinceID
RIGHT OUTER JOIN
dbo.tbl_City
ON dbo.tbl_ClientInfo.CityID = dbo.tbl_City.CityID
ON tbl_Client_1.ClientID = dbo.tbl_ClientInfo.ClientID
ON dbo.tbl_Case.CaseID = tbl_Client_1.CaseID
WHERE
tbl_Client_1.Role = N'Ini'
AND dbo.tbl_Case.CaseIDText = '00-4106'
-- Not sure why this is in the where clause???
CROSS JOIN
(
SELECT
dbo.tbl_Client.FirstName
FROM
dbo.tbl_Case AS c
LEFT OUTER JOIN dbo.tbl_Client
ON
c.CaseID = dbo.tbl_Client.CaseID
WHERE(dbo.tbl_Client.Role = N'Sec')
AND(c.CaseIDText = '00-4106')
) AS S


Did you intend something more like this?
SELECT 
*
FROM
(
SELECT
TOP(100) PERCENT dbo.tbl_Case.CaseIDText AS CaseID,
tbl_Client_1.FirstName AS Initiator,
tbl_Client_1.Role,
dbo.tbl_City.CitDescription + ',' + dbo.tbl_Province.ProvDescription + ' ,' + dbo.tbl_ClientInfo.PostalCode AS City,
dbo.tbl_ClientInfo.Address,
dbo.tbl_Worker.WorDescription AS CaseWorker,
dbo.tbl_Case.OpenDate,
dbo.tbl_Closure.CloseDate,
'' AS Second
FROM
dbo.tbl_Case
LEFT OUTER JOIN
dbo.tbl_Closure
ON dbo.tbl_Case.CaseID = dbo.tbl_Closure.CaseID
LEFT OUTER JOIN
dbo.tbl_Worker
ON dbo.tbl_Case.CaseWorkerID = dbo.tbl_Worker.WorkerID
LEFT OUTER JOIN
dbo.tbl_Client AS tbl_Client_1
ON --??
LEFT OUTER JOIN
dbo.tbl_Province
ON --??
RIGHT OUTER JOIN
dbo.tbl_ClientInfo
ON dbo.tbl_Province.ProvinceID = dbo.tbl_ClientInfo.ProvinceID
RIGHT OUTER JOIN
dbo.tbl_City
ON dbo.tbl_ClientInfo.CityID = dbo.tbl_City.CityID
ON tbl_Client_1.ClientID = dbo.tbl_ClientInfo.ClientID
ON dbo.tbl_Case.CaseID = tbl_Client_1.CaseID
WHERE
tbl_Client_1.Role = N'Ini'
AND dbo.tbl_Case.CaseIDText = '00-4106'
) AS T
CROSS JOIN
(
SELECT
dbo.tbl_Client.FirstName
FROM
dbo.tbl_Case AS c
LEFT OUTER JOIN dbo.tbl_Client
ON
c.CaseID = dbo.tbl_Client.CaseID
WHERE(dbo.tbl_Client.Role = N'Sec')
AND(c.CaseIDText = '00-4106')
) AS S
Go to Top of Page

Sep410
Posting Yak Master

117 Posts

Posted - 2008-11-13 : 20:50:21
Hi,
Thank you for reply. I tested both select and both of them work well individually. The problem is I don’t know how make them one select statement.




Sep
Go to Top of Page
   

- Advertisement -