C# SQL语句没有给出正确的输出
我有一个数据库驱动的webapp。在我的数据库中,我有四个表: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
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!谢谢,这就成功了!谢谢,这就成功了!