Coldfusion 2查询比较

时间:2013-04-12 09:47:20

标签: coldfusion

我在Coldfusion中有2个Query对象现在我想根据这2个查询创建一个小报告

查询可能看起来像

Q1

ID CODE NAME ACTIVE

Q2
CODE PRICE BOOKABLE

代码CODE  字段是这两个查询之间的共同关键。现在我想得到的记录是Q1,但不是Q2,反之亦然,在CODE唯一的查询中,有多少记录是常见的。

3 个答案:

答案 0 :(得分:4)

 <cfquery name="Q1" datasource="test">
       select * from users where code not in (select code from system)
 </cfquery>
 <cfquery name="Q2" datasource="test">
          select * from system where code not in (select code from users)
  </cfquery>

答案 1 :(得分:2)

您可以使用QoQ解决此问题。

        <cfquery name="Q1" datasource="test">
            select * from table1
        </cfquery>

        <cfquery name="Q2" datasource="test">
            select * from table2
        </cfquery>

        <cfset q1code = valuelist(q2.code,"," )>
        <cfset q2code = valuelist(q1.code,"," )>

        <cfquery name="q3" dbtype="query" >
            select * from q1 where code Not in(#q1code#)
        </cfquery>

        <cfquery name="q4" dbtype="query" >
            select * from q2 where code Not in(#q2code#)
        </cfquery>

        <cfquery name="q5" dbtype="query" >
            select * from q1,q2 where q1.code = q2.code
        </cfquery>

答案 2 :(得分:0)

与其他人同意,让数据库完成工作。如果它们在同一个数据库中,那么您这样做是为了获取两个表共有的记录:

SELECT Q1.ID
  ,Q1.CODE 
  ,Q1.NAME 
  ,Q1.ACTIVE
  ,Q2.PRICE 
  ,Q2.BOOKABLE
FROM Q1, Q2
WHERE Q1.CODE = Q2.CODE

为了完成问题的第一部分..获取Q1中的记录而不是Q2中的记录,如果我正确理解你,你可以使用outer_join做到这一点。执行外连接时,所有数据库的语法都不同。我总是要去查一下,所以我不打算在这里写。

另一种选择是联合两个表,让冷融合在column_name =''

上提取报告
select * from Q1 UNION SELECT * FROM Q2  

- 由于两个dbs中都存在重复的“代码”列,因此您无法实际执行此操作(选择*)。 你必须明确指定列并将第一个重命名为Q1Code,然后重命名为Q2Code。

然后在CF中你做

<cfif q2Code EQ ''> print Q1: #Q1CODE# <cfelse> print Q2: #Q2CODE#  </cfif>

或者你想要:

<cfif q1code EQ Q2code> yay they match</cfif>