我的系统要求我使用VbScript
我的情况
我有2个表,名为CoverTypes(coverID,coverName数据)和InsuCover(用户选择CoverID和coverName数据)。
我想显示CoverTypes中的所有数据,如果数据也在insuCover表中,则复选框(已选中),如果没有相同的数据则取消选中
到目前为止我做的是
要显示的代码
<% 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 %>
问题是
目前只选择了一个复选框,因为我没有循环过度保护,但是当我循环2表并进行比较时,所有数据都会重复多次。
如何在CoverTypes中显示所有数据,如果数据也出现在insuCover表中,则复选框为true?
谢谢。
答案 0 :(得分:0)
我仅使用您提供的两列创建了表,忽略了insuranceReqId列。
基本语句将使用coverID链接两个表,使用LEFT联接返回CoverTypes表中的所有值,并从不存在coverID的insuCover返回NULL。使用简单的CASE语句,我们可以测试数据是否存在于第二个表中,并输出合适的列,可以是1(已选中)或0(未选中),可用于确定UI上复选框的.checked状态。
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
您可以忽略输出中的最后两列,因为它们只是用于直观地检查结果。