Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Datatable查询一行中多个select的组合_C#_Sql_Sqlite - Fatal编程技术网

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

C# 使用Datatable查询一行中多个select的组合,c#,sql,sqlite,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, thisi

我将继续向您展示一个简单的示例来进行解释

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个select组合的结果,而不仅仅是两个

它正在工作,但是我想要一个数据表,在那里我可以使用

 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();
}

这应该在SQL中完成。如果你有问题,那么你可以尝试做不同的。您不需要表上的索引来连接它们

  select distinct n.NAME, a.AGE
  from NAMES n
     JOIN AGES a on a.ID = n.ID
  where n.ID=1
您可以创建一些自定义代码,从中获得两个数据表并以某种方式合并它们,但我认为这不是一个好的解决方案

如果由于某种原因,年龄和名称上的ID不同,并且无法联接,则您可能应该使用两个参数AgeId和NameId创建SQL查询:

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

你的例子毫无意义。表之间有一个链接,即,
id
。我认为您应该发布另一个问题,并对问题进行更好的解释(修改此问题对@NickBray不公平,因为这可能会导致他的答案不正确)。我发明了一个示例,让我修改id列。你真的应该问另一个问题。根据最初的公式,尼克的回答是正确的。您应该在
from
子句中使用
交叉连接
,而不是逗号。“,”是一种古老的SQL语法。