无法在coldfusion中加入2个查询

时间:2011-03-14 15:07:03

标签: join coldfusion

我对coldfusion程序员有一个简单的问题,我想知道我在这段代码中做错了什么:

<cfquery name="get_account_plan" datasource="#DSN2#">
    SELECT 
        A.*,
        C.* 
    FROM
        ACCOUNT_PLAN A,
        #dsn_alias#.COMPANY C
    WHERE
        A.ACCOUNT_CODE= '#attributes.str_account_code#'
        OR A.ACCOUNT_CODE= '#attributes.str_account_code#.%'
        AND C.COMPANY_ID = A.ACCOUNT_ID
</cfquery>

为什么我得到此查询的输出不同?为了

<cfoutput>#get_account_plan.company_id#</cfoutput>

我得到值1和

<cfoutput>#get_account_plan.ACCOUNT_ID#</cfoutput>

我得到了419的价值?

3 个答案:

答案 0 :(得分:3)

检查where子句中的优先顺序。使用括号使“或”和“和”定义更清晰。

答案 1 :(得分:0)

您需要特定一种类型的连接,这是非常严格的。

内连接,外连接,左外连接,右外连接。

这就是为什么你的数据被搞砸了。

答案 2 :(得分:0)

试试这个:

<cfquery name="get_account_plan" datasource="#DSN2#">
    SELECT 
        A.*,
        C.* 
    FROM
        ACCOUNT_PLAN A INNER JOIN #dsn_alias#.COMPANY C ON C.COMPANY_ID = A.ACCOUNT_ID
    WHERE
        A.ACCOUNT_CODE= <cfqueryparam cfsqltype="cf_sql_varchar" value="#attributes.str_account_code#" />
        OR A.ACCOUNT_CODE LIKE '#attributes.str_account_code#.%' <!--- Note LIKE. BTW, you need to sanatise this input! --->
</cfquery>