比较两个表行值ColdFusion?

时间:2017-01-16 18:16:32

标签: sql coldfusion

我有两个查询,每个查询都在单独的表格中输出。两个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>

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

2 个答案:

答案 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'#">