2016-09-27 12 views
0

私は私のシステムを必要とし使用して別のテーブルに等しい一つのテーブル内のレコードを比較する方法
VBScriptを使用するVBスクリプト

私の状況は
あるI持っている2台、名前のCoverTypes(coverID、コードネームデータ)とInsuCover (ユーザーが選択したCoverIDとcoverNameデータ)。私が何をしたかまったく同じデータ

は、これまでではありませんがある場合

は、私は、チェックボックス(チェックされている)のデータは、insuCover表でもある場合や未確認とCoverTypes内のすべてのデータを表示したいです

  • マイクエリ

    coverTypes.Open "SELECT * FROM preregister.coverType"、CONN、1

    insuCover.Open '& insFireReqID &を "" "insuranceReqId = insuCover SELECT * FROM"'、CONN、1

コードは、問題がある

        <% Do While Not coverTypes.EOF%> 
            <% if insuCover("coverId") = coverTypes("coverID") then%> 
             <label id="coverID" name="coverNm"><%=coverTypes("coverNm")%></label> 
             <input checked ="True" id="item_isSelected" name="item.isSelected" type="checkbox" value="<%=coverTypes("coverId")%>" /><br> 
            <% else %> 
             <label id="coverID" name="coverNm"><%=coverTypes("coverNm")%></label> 
             <input id="item_isSelected" name="item.isSelected" type="checkbox" value="<%=coverTypes("coverId")%>" /><br> 
            <% end if%> 
           <% coverTypes.MoveNext %> 
           <% Loop %> 

を表示します
現在、私はinserCoverをループしないので、1つのチェックボックスしか選択されていませんが、2つのテーブルをループして比較すると、すべてのデータが何度も繰り返されます。

CoverTypesにすべてのデータを表示し、データがインシュレーションテーブルにも存在する場合は、チェックボックスをtrueにする方法はありますか?

ありがとうございます。

+1

sql文を使用して比較を完了し、結果を各行に対して1または0として返します(いくつかはチェックされ、他のものは返されないことを前提としています)。その行の結果が1の場合は、チェックボックスをチェックします。これにより、ループが単純化され、データセットの各行がカバーされます。 – LogicalMan

+0

はい、仮定は正しいですが、SQL文を置く場所がかなりぼやけているので、私は1つの例を表示できますか? – user3431310

答えて

0

あなたが用意した2つの列を使用してinsuranceReqId列を無視してテーブルを作成しました。

基本ステートメントは、CoverIDを使用して両方のテーブルをリンクし、CoverTypesテーブルからすべての値を返すLEFT結合を使用し、カバーIDが存在しない場合は、単純なCASE文を使用すると、データが2番目のテーブルにあるかどうかをテストし、適切なカラムを1(チェック済み)または0(チェックなし)として出力し、UIのチェックボックスのチェック状態を判断できます。

SELECT p.coverID, p.coverName, CASE WHEN i.coverID IS NULL THEN 0 ELSE 1 END IsChecked, i.coverID, i.coverName 
FROM preregister.coverType p 
LEFT JOIN InsuCover i ON p.coverID = i.coverID 

出力の最後の2つの列は無視され、視覚的に結果を確認することができます。

関連する問題