【问题标题】:How to show results by Category in SQL and display in classic ASP如何在 SQL 中按类别显示结果并在经典 ASP 中显示
【发布时间】:2021-03-01 14:28:12
【问题描述】:

我有一个表格,我希望在该表格中显示在经典 ASP 中按类别分组的页面上的记录,以便最新记录显示在顶部。我正在使用 MS SQL 2005 服务器。 例如表格是这样的

ID  Data1  Data2  Category
1     abc   def    test1
2     rrr   344    test2
3     ttt   edf    test1
4     www   ghj    test2

sql="select * from TABLE where Category='test1" and Category='test2' order by ID desc"

我想在页面的不同位置显示类别 Test1 和 Test2 的所有数据。如何按类别区分结果?

谢谢,

【问题讨论】:

  • 您为什么要使用许多 一直不受支持的软件?您的 where 子句不正确。您的查询无法返回任何行。

标签: sql sql-server


【解决方案1】:

如果您想在不同的地方显示结果,只需运行两条 SQL 语句并将结果存储到 2 个不同的 Recordset 中。

<% 
set rs1=Server.CreateObject("ADODB.recordset")
set rs2=Server.CreateObject("ADODB.recordset")

SQL1="select * from TABLE where Category='test1' order by ID desc"
SQL2="select * from TABLE where Category='test2' order by ID desc"

rs1.Open SQL1, ConnectionString
rs2.Open SQL2, ConnectionString

Test1_ID       = rs1("ID")
Test1_Data1    = rs1("Data1)
Test1_Data2    = rs1("Data2")
Test1_Category = rs1("Category")

Test2_ID       = rs2("ID")
Test2_Data1    = rs2("Data1")
Test2_Data2    = rs2("Data2")
Test2_Category = rs2("Category")
%>

此代码假定您已经设置了连接字符串 = ConnectionString 并且已经打开了它,并且附注,您可以共享连接,或者您可以为每个记录集创建一个,如果它没有那么多数据,它不会很重要,但如果它的数据量更大,那么拥有 2 个连接对象也无妨。

现在,当您要显示结果时,您只需 rs1.MoveNext 移动到第一个记录集中的下一条记录,然后 rs2.MoveNext 移动到第二个记录集中的下一条记录。您的问题是如何能够在不同的位置显示记录,所以现在您有了变量名称和移动到下一条记录的方法,如果您知道如何通过循环推进记录集直到到达最后一条记录,您只需对两个记录集都执行此操作,并且随着每个记录集的完成和显示,它们将是分开的,直到您编写部分以显示来自 rs2 的结果。

结束语 - 如果您需要具体说明 SQL,您可以以 database.tablename 的格式指定来源。因此,在示例中,您将为 SQL1 执行类似的操作:

select * from DATABASE.TABLE where Category='test1' order by ID desc

【讨论】:

  • 这是一个糟糕的建议,建议两个数据库连接,而一个连接可以完成同样的操作,这是可怕的解决方案。这不会通过我们团队的 QA。
  • 我说在这种情况下它是不需要的,但是当您稍后获得更高级的查询要求时,一些旧的 ASP 技巧会在您可能需要一个连接进行选择和另一个用于插入,理想情况下,您可以将它们组合成一个。如果您的服务器上的资源太少以至于 2 个连接会成为问题,我担心您的 QA 团队。
猜你喜欢
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多