【问题标题】:Select all tables row of dataset that lesson is equal 2 specific values选择课程等于 2 个特定值的数据集的所有表行
【发布时间】:2015-10-22 18:14:39
【问题描述】:

我有一个数据库,其中有一个名为MainData 的表。数据格式如下:

ID  Lesson  Time    Score
1   C       165     4
1   E       190     3
1   H       195     3
1   I       200     4
2   A       100     2
2   B       150     5
2   D       210     2
2   E       110     4
3   D       130     5
3   E       190     5
3   H       210     4
3   I       160     4
3   J       110     4
4   E       120     3
4   H       150     4
4   J       170     4

我想写一个命令。举个例子来解释一下

例子:

如果Lesson 等于EI(在这种情况下ID 3 具有此条件),则该命令将返回该特定ID 的所有行。在这个数据集中,多个 ID 可以有这种情况。我需要的是返回这些特定 ID 的所有行。

顺便说一句,mydataset 是访问权限。

感谢您的帮助。

我已经尝试过的东西......

private void btn_recom_Click(object sender, EventArgs e)
{
   connection.Open();
   OleDbCommand command = new OleDbCommand();
   command.Connection = connection;
   private void GetRows()
   {
       // Get the DataTable of a DataSet.
       DataTable table = dsDataSet.Tables["MainData"];
       DataRow[] rows = table.Select();
       // Print the value one column of each DataRow.

   }
}

【问题讨论】:

  • 那么,您是否使用 ADO.Net 连接到您的数据库?还是您使用的是 Linq 提供程序?也许你可以展示一些你自己尝试过的代码。
  • @juharr,我正在使用 Linq

标签: c# ms-access


【解决方案1】:

下面的 SQL 可以完成这项工作,尽管它的效率有点低:

SELECT * FROM MainData WHERE ID IN
(SELECT T1.ID
FROM MainData AS T1 INNER JOIN MainData AS T2 ON T1.ID = T2.ID
WHERE T1.Lesson="E" AND T2.Lesson="I"
GROUP BY T1.ID);

【讨论】:

  • 感谢@Johanness,但它不返回任何行。另外请您解释一下什么是T
  • T1 是 MainData 表的第二个实例:... FROM MainData AS T1.. 表示“获取 MainData 的实例,因为我有几个实例,所以将其命名为 T1”。我用你的表在 Access 中尝试了这个 SQL,它起作用了 - 你是如何尝试实现它的?
  • 你好@Johanness。我把整个问题放在下面的链接中。我很高兴。 stackoverflow.com/questions/33302712/…
  • 那与我建议的完全不同。请更新或扩展此线程中的原始问题,而不是提出新问题。此外,任何人都无法在新问题中看到您想要的内容。
  • 对不起@Johanness。我忘了编辑上传的脚本。我刚刚修好了,你可以再检查一下吗
猜你喜欢
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
相关资源
最近更新 更多