【问题标题】:Update when unchecked value is checked检查未检查的值时更新
【发布时间】:2016-07-14 16:59:46
【问题描述】:

我有一个查询,其中同时显示了报告名称和报告 ID 这仅适用于预先检查报告的情况。这些值填充在数据网格中。如果未选中报告,则仅显示名称。我尝试使用 UPDATE 关键字,但一直遇到语法错误。我知道对查询的微小更改很简单,但是当报告未选中或基本上reportvisible 为0 时,我尝试显示reportid 时遇到了麻烦。我如何解决此问题以显示reportid,无论它是否是检查与否?

valsql1 = "SELECT c.ReportID, c.COMPANYID, rl.REPORTNAME 
           FROM CompanyReportListTable c 
             right  join  ReportList rl on c.reportid = rl.ReportID 
                                       and reportvisible = 1 
                                       and CompanyID =" & DropDownList1.SelectedValue & " 
           where rl.ReportID in (
                                  Select ReportID 
                                  from ReportList 
                                  where ReportVisible = 1
                                 ) 
            order by ReportName"

【问题讨论】:

  • 为什么不直接从join语句中删除and reportvisible = 1
  • 原因是不要失去每家公司的适当报告的准确性。我尝试从 join 语句中删除 reportvisible。当我运行该程序时,未检查的报告名称旁边仍然没有报告 ID。我检查未检查的报告也没有显示报告 ID。

标签: mysql vb.net boolean


【解决方案1】:

您只在 reportvisible = 1 上加入是正确的,然后您只选择了 reportvisible = 1 的 reportID。您两次过滤掉了 reportvisible = 0 的行,所以您当然不会获取这些行的reportids。您应该在 SELECT 子句中添加 rl.reportvisible,并从 join 和 where 子句中删除 reportvisible = 1

【讨论】:

  • 好的,这就是我得到的。我从 join 和 where 子句中删除了 reportvisible,并将 rl.reportvisible 添加到 SELECT 子句中。当我运行该程序时,我得到的报告超出了任何选定公司所需的数量,而未检查的报告仍然没有显示报告 ID。
  • 我相信在查询中,它可能只需要一个小的,一个字母的变化。
【解决方案2】:

这只是一个单词/两个字母的变化。在第一个 SELECT 语句中,应该是 rl.REPORTID,而不是 c.ReportID。参考右连接; y 使用右连接,它从报告列表中返回选定的行,将其与 crl 表匹配。现在我们做到了,无论是否匹配,reportID 都会出现。有点像报告名称/标题

【讨论】:

    猜你喜欢
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    相关资源
    最近更新 更多