我有 2 个表 Users
和 TimeSheets
,Timesheets
表有 UserId
列,这显然是用户表中的用户 ID :)
逻辑
而且我正在尝试获取 Timesheets
表的所有数据以及用户表中的用户名,但不知何故,我的查询似乎是相反的!
现在我知道这可能是一个简单的查询,但我个人对 SQL 一无所知(我的错!)
这是我的查询:
CREATE PROCEDURE [dbo].[GetTimeSheets]
AS
BEGIN
SELECT
t.Id,t.Enter_time,t.Exit_Time,t.Total,t.Date,t.Month,t.Year,u.Name AS username
FROM
TimeSheets t
FULL OUTER JOIN
Users u ON u.Id = t.UserId
GROUP BY
t.Id,u.Name
END;
这里是返回数据的截图:
如您所见,我在时间表表中不存在任何数据的情况下获取我的用户名!
这个视图应该从用户那里获取时间表表,然后是每行的用户名。
更新
这是我的时间表表格架构
CREATE TABLE [dbo].[TimeSheets]
(
[Id] INT NOT NULL PRIMARY KEY,[UserId] INT NOT NULL,[Enter_time] TIME NOT NULL,[Exit_Time] TIME NULL,[Total] TIME NULL,[Date] DATE NULL,[Month] NVARCHAR(50) NOT NULL,[Year] NVARCHAR(50) NOT NULL,CONSTRAINT [FK_TimeSheets_Users]
FOREIGN KEY ([UserId]) REFERENCES [dbo].[Users]([Id])
);
这是用户表
CREATE TABLE [dbo].[Users]
(
[Id] INT NOT NULL,[UserType] NVARCHAR (50) NOT NULL,[Name] NVARCHAR (100) NOT NULL,PRIMARY KEY CLUSTERED ([Id] ASC)
);