0

データベース駆動型の Web アプリケーションを使用しています。私のDBには4つのテーブルがあります:

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;

なぜ私は何も返されなかったのですか?また、エラーはまったく発生しません。DataTableデバッグ時に空の結果を格納します。

4

2 に答える 2

3

「from」の前にコンマがあり、inner joinそのように結合するよりも使用する方が優れています:

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

これを試してください。

于 2013-06-11T13:00:11.533 に答える
1

INNER JOINクエリで試す

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
于 2013-06-11T13:00:37.017 に答える