在选择选项循环中复制数据 - SQL:VBScript



我试图删除发生的重复数据:

活动与大厅
宴会桌
活动与大厅
麦克风支架
联课
交通锥
景观
花瓶
体育

但我想要的输出是:

活动与大厅
宴会桌
麦克风支架
联课
交通锥
景观
花瓶
体育

以下是代码:

<select name="s_item" style="width:173px;" onChange="Retrieve(this.value)" required>
    <option value="">Select Item</option>
    <%
    SET rsItem = Server.CreateObject("ADODB.Recordset")
    rsItem.Open "SELECT * FROM inv_general",conn                                    
    IF rsItem.EOF <> true then
    DO WHILE rsItem.EOF <> true

    SET rsCat = Server.CreateObject("ADODB.Recordset")
    rsCat.Open "SELECT * FROM inv_category WHERE inv_cat_id='"&rsItem("inv_cat_id")&"'",conn
    %>
    <optgroup label="<%=rsCat("inv_cat_name")%>">
    <option value="<%=rsItem("inv_item_id")%>"<%IF request("item")=rsItem("inv_item_id") THEN%>selected<%END IF%>><%=rsItem("inv_item_name")%></option>
    </optgroup>
    <% 
    rsItem.MOVENEXT
    LOOP
    END IF %>
    </select>

您没有提到正在使用哪些dbms,但请尝试以下代码,让我们看看它适合您。

<select name="s_item" style="width:173px;" onChange="Retrieve(this.value)" required>
    <option value="">Select Item</option>
    <%
    Dim parentName
    parentName = ""
    SET rsItem = Server.CreateObject("ADODB.Recordset")
    rsItem.Open "SELECT c.inv_cat_name, i.inv_item_id, i.inv_item_name FROM inv_general i INNER JOIN inv_category c on i.inv_cat_id = c.inv_cat_id order by c.inv_cat_name, i.inv_item_name",conn                                    
    IF rsItem.EOF <> true then
    DO WHILE rsItem.EOF <> true
    If parentName <> rsCat("inv_cat_name") Then
    parentName = rsCat("inv_cat_name")
    %>
    <optgroup label="<%=parentName%>">
    <%
    End If
    %>
    <option value="<%=rsItem("inv_item_id")%>"<%IF request("item")=rsItem("inv_item_id") THEN%>selected<%END IF%>><%=rsItem("inv_item_name")%></option>
    </optgroup>
    <% 
    rsItem.MOVENEXT
    LOOP
    END IF %>
    </select>

如果像这样联接项目表和类别表,则无需执行额外的 SQL 语句:

SELECT c.inv_cat_name, i.inv_item_id, inv_item_name FROM inv_general i INNER JOIN inv_category c on i.inv_cat_id = c.inv_cat_id order by c.inv_cat_name, inv_item_name

然后,您需要将类别名称存储在parentName的临时变量中。由于您按类别名称和项目名称对结果进行排序,因此使用

If parentName <> rsCat("inv_cat_name") Then
End If

块,你基本上避免重复的类别名称。代码可能有语法错误,我现在没有机会测试它。干杯!

最新更新