Join 无法在coldfusion中加入2个查询

Join 无法在coldfusion中加入2个查询,join,coldfusion,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

我有一个简单的问题要问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的值

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

检查where子句中的优先顺序。使用括号使or和and的定义更加清晰。

您需要指定一种类型的联接,这要严格得多

内部联接、外部联接、左侧外部联接、右侧外部联接


这就是返回的数据混乱的原因。

您需要指定一种连接类型,这要严格得多

内部联接、外部联接、左侧外部联接、右侧外部联接

这就是返回的数据被弄乱的原因。

尝试以下方法:

<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>
试试这个:

<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>


谢谢,但是你能告诉我这些括号是怎么放的吗?!如果您希望company_id和account_id是相同的值,那么这就是方法:A.account_CODE='attributes.str_account_CODE'或A.account_CODE='attributes.str_account_CODE.%'和C.company_id=A.account_ID@abrabr-您没有提供足够的信息。不起作用如何…?@abrabr发布您编辑的代码,以便我们可以看到您所做的仍然不起作用的事情,并告诉我们哪些事情没有发生,以及发生了什么。如果您使用Paul提供的代码,则公司id和帐户id应始终匹配,因为该id和条件必须始终计算为true才能显示记录。@crosenblum有一个想法:尝试使用特定联接。你现在所做的可能会被解释为交叉连接,所以你得到了一切。没有更多关于表格的细节和你所看到的,这是迄今为止最好的想法。thx,但是你能告诉我这些括号的确切用法吗?!如果您希望company_id和account_id是相同的值,那么这就是方法:A.account_CODE='attributes.str_account_CODE'或A.account_CODE='attributes.str_account_CODE.%'和C.company_id=A.account_ID@abrabr-您没有提供足够的信息。不起作用如何…?@abrabr发布您编辑的代码,以便我们可以看到您所做的仍然不起作用的事情,并告诉我们哪些事情没有发生,以及发生了什么。如果您使用Paul提供的代码,则公司id和帐户id应始终匹配,因为该id和条件必须始终计算为true才能显示记录。@crosenblum有一个想法:尝试使用特定联接。你现在所做的可能会被解释为交叉连接,所以你得到了一切。没有更多关于表和您看到的内容的详细信息,这是迄今为止最好的想法。您使用的是什么数据库服务器?@ciaran u是指服务器的操作系统?那么微软服务器2008就很难说了。我们需要更多的线索来了解每个表中存在哪些列以及您正在尝试做什么。您使用的是什么数据库服务器?@ciaran u是指服务器的操作系统?那么微软服务器2008就很难说了。我们需要更多的线索来了解每个表中存在哪些列,以及您试图做什么。我认为这是一个给定的条件。你到底想干什么?我想这是必然的。你到底想干什么?