【发布时间】:2021-10-07 06:04:08
【问题描述】:
我有 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, t.Enter_time, t.Exit_Time, t.Total, t.Date,
t.Month, t.Year, 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)
);
【问题讨论】:
-
请输入样本数据以及所需的输出。
标签: sql sql-server tsql join stored-procedures