我有两个查询,每个查询都在单独的表格中输出。两个quires具有相同数量的记录,但我想检查每个字段是否相等,如果不是我想为该表行设置不同的背景颜色。这是我到目前为止的代码:
<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 :(得分:1)
我会使用循环:
0
如果需要,可以将循环包裹在TR和TD之间。
此方法还消除了对资源密集型QofQ的需求。
答案 1 :(得分: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'#">