2017-01-16 3 views
0

У меня есть два запроса, и каждый запрос выводится на экран в отдельной таблице. Оба запроса имеют одинаковое количество записей, но я хотел бы проверить, равно ли каждое поле, если нет, я хочу установить другой цвет фона для этой строки таблицы. Вот код, который я до сих пор:Сравнение двух значений строки таблицы 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> 

Вы можете обернуть петлю вокруг TRs и TDs если вы желаете.

Этот метод также исключает необходимость использования QofQ, ресурсоемких.