我目前正在.NET中开发一个实体框架应用程序,我正在努力处理一个与T-SQL有关的查询。
首先,我想从数据库中向您展示我的模型,并了解该模型在规范化方面是否正确。我想提一下,我不是SQL Server数据库设计方面的专家,对于有经验的人来说这可能很容易,但对我来说却不是。
我目前正在开发的应用程序的目标是使用INS和OUTS实现库存控制系统,以便能够知道该设备在哪些事件中被使用以及何时进出精确日期。< / p>
对于这个例子,我只从我的数据库设计中获取了6个表。
我有3个基表和3个辅助表来关联基表。
EQUIPO :
Id | int | not null | primary key
Marca | nvarchar(max) | not null
Modelo | nvarchar(max) | not null
事件摘要:
Id | int | not null | primary key
Sede | nvarchar(max) | not null
萨利达:
Id | int | not null | primary key
Fecha | datetime2(0) | not null
接下来的三个表是与基表相关的表。
EventoEquipo :
EventoId | int | not null | primary key (References Evento.Id)
EquipoId | int | not null | primary key (References Equipo.Id)
SalidaEvento :
SalidaId | int | not null | primary key (References Salida.Id)
EventoId | int | not null | (References Evento.Id)
SalidaEquipo :
SalidaId | int | not null | primary key (References Salida.Id)
EquipoId | int | not null | (References Equipo.Id)
我需要查找的SQL查询是一个查询,它允许我从特定设备获取具有其输出日期的事件,如果没有注册,那么我应该在输出日期获得空。
我能够开发这个部分查询:
DECLARE @EquipoId int
SET @EquipoId = 4
SELECT ev.Nombre
FROM Evento ev
INNER JOIN EventoEquipo eve ON eve.EventoId = ev.Id
INNER JOIN Equipo eq ON eq.Id = eve.EquipoId
WHERE eq.Id = @EquipoId
此查询允许我获取使用设备的事件,但如果我继续使用相同的逻辑,我只会获得已注册的事件,即使在那里我也需要获取所有事件没有注册。
提前谢谢!
PS:很抱歉基本的桌面视觉效果,但我无法上传超过2张图片。