2016-07-26 2 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를 사용하는 경우 쿼리에 활성 레코드 데이터베이스 패턴을 사용하는 것이 좋습니다. 간단 해. – 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; 
을 실행할 수 있습니다 다음

은 내가
에 의해
당신이 당신의 그룹 후) "90 일"을 가지고하는 데 필요한 TABLETHREE 물건을 주석 처리하고 iv'e은 [90 일]에 의해 순서에 따라 순서를 변경. 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