【问题标题】:ORDER BY causing query not to work?ORDER BY 导致查询不起作用?
【发布时间】:2016-11-30 05:09:27
【问题描述】:

我有一个查询在访问中按预期工作。我已经将它“转换”为它不想工作的网络系统。但是,当我删除必需的 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

任何帮助将不胜感激。如果需要,我可以提供更多查询。

【问题讨论】:

  • 也许你应该说ORDER BY [90DayThroughput]?不知道...
  • 如果您使用 Codeigniter,我建议您在查询中使用 Active Record 数据库模式。它更简单。
  • @MikeRobinson 这会导致完全相同的问题:(无论如何感谢您的帮助。
  • @JobSam 我会调查一下,谢谢!

标签: php sql codeigniter advantage-database-server


【解决方案1】:

如果在添加 Order by 之前它正在工作,我认为您会遗漏一些查询
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;

我已经注释掉了 TABLETHREE 的东西
你需要在你的小组之后有一个 )"90Days" by
并且我通过 ORDER BY [90Days].[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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多