使用Datatable查询一行中多个select的组合

时间:2013-01-04 13:37:38

标签: c# sql sqlite

我将通过向您展示一个简单的示例来解释

table NAMES
 ID_NAMES
 NAME

table AGES
 ID_AGES
 AGE

这是我的查询

SELECT 
( 
  select NAME
  from NAMES 
  where ID_NAME=1
) as thisismyname,
(
  select AGE
  from AGES
  where ID_AGE=50
) as thisiymyage

我期待像

这样的结果
thisismyname, thisismyage

我完全清楚它是完全愚蠢的,因为我可以进行连接并获得简单的查询,但表之间没有链接,这将是50个选择的结果,而不仅仅是两个。< / p>

它正常工作,但我想要一个DataTable,只需使用

即可查询
 mydatatable[0]["thisismyname"]

实际上它只给我一个ExecuteScalar的结果,SQLDataReader给我空的DataTable

using (var conn = Connection)
{
  DbCommand mycommand = GetCommand(conn, sql);
  DbDataReader reader = mycommand.ExecuteReader();
  dt.Load(reader);
  reader.Close();
  conn.Close();
}

1 个答案:

答案 0 :(得分:2)

这应该在SQL中完成。如果您遇到问题,那么您可以尝试区分问题。您不需要表上的索引来加入它们。

  select distinct n.NAME, a.AGE
  from NAMES n
     JOIN AGES a on a.ID = n.ID
  where n.ID=1

您可以创建一些自定义代码,您可以获得两个数据表并以某种方式合并它们,但我认为这不是一个好的解决方案。

如果出于某种原因,AGES和NAMES上的ID不同且无法加入,那么您应该创建一个包含2个参数AgeId和NameId的SQL查询:

  select distinct n.NAME, a.AGE
  from NAMES n
        cross join AGES a
  where n.ID=@nameId
    and a.ID=@ageId