2016-07-26 11 views
0

私はアクセスで意図したとおりに動作しているクエリを持っています。私はそれを働かせたくないウェブシステムのために "変換"しました。しかし、質問が投稿されたORDER BY(投稿されたサンプルの一番下)を削除すると正しく動作しています。ORDER BYによってクエリが機能しなくなりましたか?

問題の原因となるものがわかりません。表示されるエラーメッセージは以下の通りである: Expected lexical element not found:) There was a problem parsing the table names after the FROM keyword in your SELECT statement. -- Location of error in the SQL statement is: 812 (line: 17 column: 72)

それは(要求されない限り)長いですが、問題は、一番下の行に発生したとして、私は、全体のクエリを投稿したくない:

SELECT TOP 5 [90Days].PRODUCT, [90Days].product2, [90Days].pcustkey, [90Days].[90DayThroughput], TABLETHREE.SumOfLQUAN AS [Current Stock], (ROUND([SumOfLQUAN]/[90DayThroughput],3))*90 AS [DaysRemaining] FROM 
    (
     SELECT TABLEONE.PRODUCT, Sum(TABLEONE.QUANTITY) AS [90DayThroughput], TABLETWO.product2, TABLETWO.pcustkey FROM TABLETWO INNER JOIN TABLEONE ON TABLETWO.PRODCODE = TABLEONE.PRODUCT WHERE 
     (
      (
       (TABLEONE.DATE)>='$date'-90 
      ) 
      AND 
      (
       (TABLEONE.type)='I11' Or (TABLEONE.type)=' 11' 
      ) 
      AND 
      (
       (TABLETWO.POWNER)='$custCode' 
      ) 
     ) 
     GROUP BY TABLEONE.PRODUCT, TABLETWO.product2, TABLETWO.pcustkey ORDER BY Sum(TABLEONE.QUANTITY) DESC 

どんな助けでも大歓迎です。私は必要に応じてより多くの質問を提供することができます。

+1

「ORDER BY [90DayThroughput]」と言っているのでしょうか? Dunno ... –

+0

Codeigniterを使用している場合は、クエリにActive Record Database Patternを使用することをお勧めします。簡単です。 – JobSam

+0

@MikeRobinsonこれはまったく同じ問題を引き起こします:(助けをとってくれてありがとう) – Jake

答えて

0

は、私はそれが

アイブ氏が作成したTABLETHREEしていないが参加している
で注文を追加する前に働いていた場合は、クエリの一部が欠けていると思うので、私は、クエリ

TRY 
DROP TABLE #Table1; 
CATCH ADS_SCRIPT_EXCEPTION 
IF __errcode = 7112 THEN 
--Do Nothing 
ELSE 
RAISE; // re-raise the exception 
END IF; 
END TRY; 

TRY 
DROP TABLE #Table2; 
CATCH ADS_SCRIPT_EXCEPTION 
IF __errcode = 7112 THEN 
--Do Nothing 
ELSE 
RAISE; // re-raise the exception 
END IF; 
END TRY; 

Select 'AAA' as Product, 12 as Quantity, 'I11' as Type, curdate() as "Date" 
into #Table1 
from System.iota; 

Select 'AAA' as Product, 'AAA111' as CustKey, '$custCode' as POwner, 'MyPRODCODE' as PRODCODE, 'KEY' as pcustkey 
into #Table2 
from System.iota; 
に実行することができ、次の

iは
によって
はあなたのグループの後に) "90日" を持つために必要なTABLETHREEのものをコメントアウトしているとiv'eは[90日]、ORDER BYで順番を変更しました。[90DayThroughput] DESC

SELECT TOP 5 
[90Days].PRODUCT, 
[90Days].product2, 
[90Days].pcustkey, 
[90Days].[90DayThroughput] 
--,#Table3.SumOfLQUAN AS [Current Stock], 
--(ROUND([SumOfLQUAN]/[90DayThroughput],3))*90 AS [DaysRemaining] 
FROM 
    (
     SELECT tb1.PRODUCT, 
     Sum(tb1.QUANTITY) AS [90DayThroughput], 
     tb2.PRODCODE as product2, 
     tb2.pcustkey 
     FROM #Table2 tb2 
     INNER JOIN #Table1 tb1 ON tb2.PRODCODE = tb1.PRODUCT WHERE 
     (
      (
       (tb1.DATE)>=curdate()-90 
      ) 
      AND 
      (
       (tb1.type)='I11' Or (tb1.type)=' 11' 
      ) 
      AND 
      (
       (tb2.POWNER)='$custCode' 
      ) 
     ) 
     GROUP BY tb1.PRODUCT, tb2.PRODCODE, tb2.pcustkey 
    )"90Days" 
ORDER BY [90Days].[90DayThroughput] DESC 
関連する問題