我正试图获取要在页面上显示的项目的信息。出于某种原因,主类别(masCat.cat_name)不返回数据。下面是我的SQL语句的代码:

  strSQL.CommandText = "Select Top 25 tblItem.item_id, tblItem.item_title
     , masCat.cat_name, regCat.cat_name, tblItem.item_lot, tblCosigner.cs_txt_id
     , tblItem.item_status, tblItem.item_photo_status, tblItem.item_pr
     , tblItem.item_premium
  From tblItem
  Left Join tblCosigner On (tblItem.item_cs_txt_id = tblCosigner.cs_txt_id)
  Left Join tblCDR On (tblItem.item_cdr_txt_id = tblCDR.cs_id)
  Left Join tblCat As masCat On (tblItem.item_mcat_id = masCat.cat_id)
  Left Join tblCat As regCat On (tblItem.item_cat_id = regCat.cat_id)
  Where " + sqlQuery + "
  Order By tblItem.item_id;";
  try
  {
      conn.Open();
      using (SqlDataReader itemReader = strSQL.ExecuteReader())
      {
          while (itemReader.Read())
          {
              resultText += "<tr>\n<td>" + itemReader.GetValue(0).ToString() + "</td>\n";
              resultText += "<td>" + itemReader.GetValue(1).ToString() + "</td>\n";
              resultText += "<td>" + itemReader.GetValue(2).ToString() + "</td>\n";
              resultText += "<td>" + itemReader.GetValue(3).ToString() + "</td>\n";
              resultText += "<td>" + itemReader.GetValue(4).ToString() + "</td>\n";
              resultText += "<td>" + itemReader.GetValue(5).ToString() + "</td>\n";
              resultText += "<td>" + itemReader.GetValue(6).ToString() + "</td>\n";
              resultText += "<td>" + itemReader.GetValue(7).ToString() + "</td>\n";
              if (itemReader.GetValue(8).ToString().Length > 0)
              {
                  price = double.Parse(itemReader.GetValue(8).ToString());
              }
              if (itemReader.GetValue(9).ToString().Length > 0)
              {
                  premium = double.Parse(itemReader.GetValue(9).ToString());
              }
              total = price + premium;
              resultText += "<td>" + total.ToString("0.00") + "</td>\n</tr>\n";
          }
          itemReader.Close();
      }
  }

我认为我的join语句对于masCat join是不正确的,但是如果我只是将tblItem.item_mcat_id改为tblItem.item_cat_id(这是第二个类别,也是在同一个查询中选择的),它就可以正常工作了。两者都是从完全相同的表中提取的,但由关系表中不同的关联字段提取。我是肯定的tblItem。item_mcat_id是主类别id字段的正确名称。
现在我已经习惯了使用MySQL,我知道使用SQL时,还应该进行分组。但我不知道除了tblItem.item_id之外,我将按什么分组,这样它就不会合并数据行。所以我也不知道这会如何解决我的问题。有人看到这个SQL语句有什么问题吗?除了主类别之外,一切都很好。
在写这篇文章的时候,我被打断了好几次,所以我有点忘记了我的想法,所以我希望我能提供足够的信息。如果没有,只要问,我会回答或更新我的问题。提前谢谢。。。
编辑
它在注释中,但是sqlQuery变量的默认值是“tblItem.item_id>0”。如果我动态地向它添加其他条件(仍然不包括主类别),它就会工作。
另外,我肯定没有说对,但我确实收到了这样的结果。我只缺少主类别字段(此字段返回空白)。查询本身没有失败。
固定的
创建表的人最初创建了tblItem.item_mcat_id zero pad。。。-.-

最佳答案

根据你的描述,我不得不说这两列:

tblItem.item_mcat_id = masCat.cat_id

不是同一类型,或者其中一个包含另一个不包含的填充。你可能得做个演员。最后确保It.McCaseId确实存在于CasiID列中。

09-26 03:51