2017-01-16 12 views
0

私は2つのクエリを持っており、それぞれのクエリは別のテーブルの画面に出力されます。両方のquiresは同じレコード数を持っていますが、私はテーブルの行に異なる背景色を設定したくない場合は、各フィールドが等しいかどうかをチェックしたいと思います。ここで私がこれまで持っているコードは次のとおりです。2つのテーブル行の値を比較する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とのTD周りループをラップすることができます

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

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

あなたの例でどのように思いやりが働いているか分かりません。どうか説明できますか? –

+0

QのQまたは「」のタグを参照していますか?あなたの答えは –

+0

trです –

1

私はループを使用します。

この方法では、リソースを大量に消費するQofQが不要になります。

関連する問題