Reputation: 43
I've got this query where I'm trying to use column identifiers (I don't know how it's called), but some appear to be working, and other not.
SELECT R1.EC_Date, R1.JO_Num, R1.EC_Intitule, R1.EC_Sens, R1.EC_RefPiece, R1.EC_Piece, R1.CG_Num, R1.EC_Reference, R1.JM_Date, R1.EC_Jour, R2.EC_Lettrage, R2.EC_Pointage
FROM ((F_COMPTEA CA INNER JOIN F_ECRITUREA EA ON CA.CA_Num = EA.CA_Num)
INNER JOIN F_ECRITUREC EC ON EA.EC_No = EC.EC_No) R1
INNER JOIN (
SELECT *
FROM F_ECRITUREC
WHERE (CG_Num LIKE '401%' OR CG_Num LIKE '411%')
AND (JO_Num = 'RAN' OR JO_Num = 'ACH' OR JO_Num = 'VTE')
AND EC_RefPiece IN (
SELECT EC_RefPiece
FROM F_ECRITUREA EA INNER JOIN F_ECRITUREC EC ON EA.EC_No = EC.EC_No
WHERE EC_Jour BETWEEN '1' AND '31'
AND JM_Date = '2013-01-07'
AND JO_Num = 'ACH'
AND EA.CA_Num LIKE '%')) R2
ON R1.EC_RefPiece = R2.EC_RefPiece
WHERE EC_Jour BETWEEN '1' AND '31'
AND JM_Date = '2013-01-07'
AND JO_Num = 'ACH'
AND EA.CA_Num LIKE '%';
In that case, the CA, EA and EC identifiers are working correctly, and the JOIN is working, but when I try to add the last JOIN with the R1 AND R2 identifiers, it doesn't appears to be working, and I can't find the difference. The errors I have are : Incorrect syntax near R1/R2. I've tried to use AS, but it's not working either, so I'm sure if it's a syntax issue, or just the result of a problem elsewhere. It's MS SQL by the way.
Any help would be much appreciated, thanks.
Upvotes: 0
Views: 125
Reputation: 10364
SELECT
R1.EC_Date,
R1.JO_Num,
R1.EC_Intitule,
R1.EC_Sens,
R1.EC_RefPiece,
R1.EC_Piece,
R1.CG_Num,
R1.EC_Reference,
R1.JM_Date,
R1.EC_Jour,
R2.EC_Lettrage,
R2.EC_Pointage
FROM
(SELECT *
FROM
F_COMPTEA
INNER JOIN F_ECRITUREA EA
ON CA.CA_Num = EA.CA_Num
INNER JOIN F_ECRITUREC EC
ON EA.EC_No = EC.EC_No
) AS R1
INNER JOIN
(
SELECT *
FROM
F_ECRITUREC
WHERE
(CG_Num LIKE '401%' OR CG_Num LIKE '411%')
AND (JO_Num = 'RAN' OR JO_Num = 'ACH' OR JO_Num = 'VTE')
AND EC_RefPiece IN (SELECT EC_RefPiece FROM F_ECRITUREA EA INNER JOIN F_ECRITUREC EC ON EA.EC_No = EC.EC_No
WHERE EC_Jour BETWEEN '1' AND '31'
AND JM_Date = '2013-01-07'
AND JO_Num = 'ACH'
AND EA.CA_Num LIKE '%')
) AS R2
ON R1.EC_RefPiece = R2.EC_RefPiece
WHERE
R2.EC_Jour BETWEEN '1' AND '31'
AND R2.JM_Date = '2013-01-07'
AND R2.JO_Num = 'ACH'
--THERE IS NO CONDITION WITHIN THIS LIKE?
AND R2.CA_Num LIKE '%'
Upvotes: 0
Reputation: 92785
SELECT
clause is missing for subquery R1
.
And you probably no longer need WHERE
conditions in your outer select. You applied them in R2
. But for sure, you're no longer can reference EA
columns in outer select. Only R1 and R2 aliases available in your outer query.
That being said I believe your query should look something like this
SELECT R1.EC_Date,
R1.JO_Num,
R1.EC_Intitule,
R1.EC_Sens,
R1.EC_RefPiece,
R1.EC_Piece,
R1.CG_Num,
R1.EC_Reference,
R1.JM_Date,
R1.EC_Jour,
R2.EC_Lettrage,
R2.EC_Pointage
FROM
(
SELECT * -- you has been missing SELECT here
FROM F_COMPTEA CA JOIN F_ECRITUREA EA
ON CA.CA_Num = EA.CA_Num JOIN F_ECRITUREC EC
ON EA.EC_No = EC.EC_No
) R1 JOIN
(
SELECT *
FROM F_ECRITUREC
WHERE (CG_Num LIKE '401%' OR CG_Num LIKE '411%')
AND (JO_Num = 'RAN' OR JO_Num = 'ACH' OR JO_Num = 'VTE')
AND EC_RefPiece IN
(
SELECT EC_RefPiece
FROM F_ECRITUREA EA INNER JOIN F_ECRITUREC EC ON EA.EC_No = EC.EC_No
WHERE EC_Jour BETWEEN '1' AND '31'
AND JM_Date = '2013-01-07'
AND JO_Num = 'ACH'
AND EA.CA_Num LIKE '%'
)
) R2 ON R1.EC_RefPiece = R2.EC_RefPiece
-- WHERE EC_Jour BETWEEN '1' AND '31'
-- AND JM_Date = '2013-01-07'
-- AND JO_Num = 'ACH'
-- AND EA.CA_Num LIKE '%' you're no longer can reference `EA` columns in outer select. Only R1 and R2 aliases available in your outer query
Upvotes: 1