2017-01-16 80 views
0

我有两个查询,每个查询输出在单独的表中的屏幕上。两个quires都有相同数量的记录,但我想检查每个字段是否相等,如果不是,我想为该表格行设置不同的背景颜色。这里是我到目前为止的代码:比较两个表行值ColdFusion?

<cfquery name="oldData" datasource="test"> 
    SELECT 
     old_id, 
     old_userid, 
     old_first, 
     old_last, 
     old_dob 
    FROM OldTest 
</cfquery> 

<cfquery name="newData" datasource="test"> 
    SELECT 
     new_id, 
     new_userid, 
     new_first, 
     new_last, 
     new_dob 
    FROM NewTest 
</cfquery> 

这里是两个表代码:

<table> 
     <tr> 
      <td valign="top"> 
       <table class="oldData"> 
        <caption>Old Data</caption> 
        <thead> 
         <tr> 
          <th>ID</th> 
          <th>UserID</th> 
          <th>First</th> 
          <th>Last</th> 
          <th>DOB</th> 
         <tr> 
        </thead> 
        <tbody> 
         <cfoutput query="oldData"> 
          <tr> 
           <td>#old_id#</td> 
           <td>#Trim(old_userid)#</td> 
           <td>#Trim(old_first)#</td> 
           <td>#Trim(old_last)#</td> 
           <td>#Trim(old_dob)#</td> 
          </tr> 
         </cfoutput> 
        </tbody> 
       </table> 
      </td> 
      <td valign="top"> 
       <table class="newData"> 
        <caption>New Data</caption> 
        <thead> 
         <tr> 
          <th>ID</th> 
          <th>UserID</th> 
          <th>First</th> 
          <th>Last</th> 
          <th>DOB</th> 
         <tr> 
        </thead> 
        <tbody> 
         <cfoutput query="newData"> 
          <tr> 
           <td>#new_id#</td> 
           <td>#Trim(new_userid)#</td> 
           <td>#Trim(new_first)#</td> 
           <td>#Trim(new_last)#</td> 
           <td>#Trim(new_dob)#</td> 
          </tr> 
         </cfoutput> 
        </tbody> 
       </table> 
      </td> 
     </tr> 
    </table> 

我不知道我是否应该输出像之前比较数据行:

<cfif oldData.old_first[currentrow] NEQ newData.new_first[currentrow]> 
    <cfset rowColor = "red"> 
</cfif> 

或者有更好的方法来解决这个问题。如果有人知道更好的方式,请让我知道。

回答

0

我建议查询类似这样的查询:

select 'same' comparison, field1, field2, etc 
from query1, query2 
where query1.someField = query2.someField 
union 
select 'different' comparison, field1, field2, etc 
from query1 
where somefield not in (<cfqueryparam value="#valueList(query2.someField#") list = true> 

你的表行的颜色可以用三元操作符来指定。

<tr bgcolor="#comparison is 'same' ? 'white' : 'red'#"> 
+0

我不确定我是否理解你的例子中的同情心是如何运作的。你能解释一下吗? –

+0

您是指Q的Q还是''标签? –

+0

tr标签在上面的答案中。 –

1

我会用循环:

<cfloop from="1" to="#oldData.recordCount#" index="r"> 
    Question #oldData.old_id[r]# = #oldData.new_id[r]#? Answer: #oldData.old_id[r] eq oldData.new_id[r]#<br> 
</cfloop> 

如果你希望你可以环绕红素和TDS循环。

该方法还消除了对资源密集型QofQ的需求。