0

列識別子を使用しようとしているこのクエリがありますが (どのように呼び出されるのかわかりません)、一部は機能しているように見えますが、他は機能していないようです。

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 '%';

その場合、CA、EA、および EC 識別子は正しく機能しており、JOIN は機能していますが、R1 および R2 識別子を使用して最後の JOIN を追加しようとすると、機能していないように見え、できません。 t 違いを見つける。私が持っているエラーは次のとおりです。 R1/R2 付近の構文が正しくありません。AS を使用しようとしましたが、どちらも機能していないため、構文の問題なのか、他の場所の問題の結果なのかは確かです。ちなみにMS SQLです。

どんな助けでも大歓迎です、ありがとう。

4

2 に答える 2

1

SELECTサブクエリ の句がありませんR1WHEREそしておそらく、外側の選択に条件は必要なくなります。でそれらを適用しましたR2。しかし、確かに、EA外部選択で列を参照することはできなくなりました。外側のクエリで使用できるエイリアスは R1 および R2 のみです。

そうは言っても、クエリは次のようになるはずです

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
于 2013-08-05T08:50:34.430 に答える