Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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# SQL语句没有给出正确的输出_C#_Sql_Sql Server_Parameters - Fatal编程技术网

C# SQL语句没有给出正确的输出

C# SQL语句没有给出正确的输出,c#,sql,sql-server,parameters,C#,Sql,Sql Server,Parameters,我有一个数据库驱动的webapp。在我的数据库中,我有四个表: User ---- UserID FirstName LastName UserGroup --------- UserGroupID UserID GroupID Group ----- GroupID Name Adress ------ AdressID UserID Street ... 对于我当前的SQL语句,我没有得到任何返回。以下是我的SQL: select a.UserID, a.FirstName

我有一个数据库驱动的webapp。在我的数据库中,我有四个表:

User
----
UserID
FirstName
LastName

UserGroup
---------
UserGroupID
UserID
GroupID

Group
-----
GroupID
Name

Adress
------
AdressID
UserID
Street
...
对于我当前的SQL语句,我没有得到任何返回。以下是我的SQL:

select 
    a.UserID, a.FirstName, a.LastName, b.GroupID, b.UserID, 
    c.GroupID, c.Name, d.AdressID, d.UserID, 
from User as a, UserGroup as b, Group as c, Adress as d 
where a.UserID = b.UserID and b.GroupID = c.GroupID 
    and a.UserID = d.UserID and d.AdressID= @id"
我用以下语句提供变量id:

dbCommand.Parameters.Add("@id", SqlDbType.Int).Value = id;

知道我为什么什么都没得到吗?我也没有任何错误。我将结果存储在调试时为空的
数据表中。

在“from”之前有逗号,而且使用
内部联接比这样联接更好:

select a.UserID, a.FirstName, a.LastName, b.GroupID, b.UserID, c.GroupID, c.Name, d.AdressID, d.UserID
from User as a
inner join UserGroup as b on b.UserId = a.UserId
inner join Group as c on c.GroupID = b.GroupID
inner join Adress as d on a.UserID = d.UserID
where d.AdressID = @id

试试这个。

在“from”之前有逗号,而且使用
内部连接比这样连接更好:

select a.UserID, a.FirstName, a.LastName, b.GroupID, b.UserID, c.GroupID, c.Name, d.AdressID, d.UserID
from User as a
inner join UserGroup as b on b.UserId = a.UserId
inner join Group as c on c.GroupID = b.GroupID
inner join Adress as d on a.UserID = d.UserID
where d.AdressID = @id

试试这个。

尝试使用
内部联接
查询

SELECT a.UserID, a.FirstName, a.LastName, b.GroupID, b.UserID, c.GroupID, c.Name, d.AdressID, d.UserID
FROM User as a
INNER JOIN UserGroup as b 
ON a.UserID = b.UserID 
INNER JOIN Group as c 
ON b.GroupID = c.GroupID
INNER JOIN Adress as d 
ON a.UserID = d.UserID
WHERE d.AdressID= @id

尝试使用
内部联接
查询

SELECT a.UserID, a.FirstName, a.LastName, b.GroupID, b.UserID, c.GroupID, c.Name, d.AdressID, d.UserID
FROM User as a
INNER JOIN UserGroup as b 
ON a.UserID = b.UserID 
INNER JOIN Group as c 
ON b.GroupID = c.GroupID
INNER JOIN Adress as d 
ON a.UserID = d.UserID
WHERE d.AdressID= @id

这是什么样的数据库?啊,请使用显式的
JOIN
语法。幸运的是,由于无意的交叉连接,您没有返回数百万行。您确实应该使用ANSI连接,而不是使用
WHERE
语句来连接所有内容。另外,由于您正在进行内部联接,是否有任何记录实际具有指定ID的地址?听起来是学习Nalso的最佳时机:我建议使用有意义的表别名-不仅仅是
a、b、c、d
-您永远不会知道它是什么。。。。使用
用户作为u
组作为g
用户组作为ug
等等-使您更容易(尤其是其他人)理解SQL!这是什么样的数据库?啊,请使用显式的
JOIN
语法。幸运的是,由于无意的交叉连接,您没有返回数百万行。您确实应该使用ANSI连接,而不是使用
WHERE
语句来连接所有内容。另外,由于您正在进行内部联接,是否有任何记录实际具有指定ID的地址?听起来是学习Nalso的最佳时机:我建议使用有意义的表别名-不仅仅是
a、b、c、d
-您永远不会知道它是什么。。。。使用
用户作为u
组作为g
用户组作为ug
等等-使您更容易(尤其是其他人)理解SQL!谢谢,这就成功了!谢谢,这就成功了!