我有这个查询来实现我的目标:
SELECT
Datum, LeavetypeID
FROM
Kalender
INNER JOIN
VerlofLijn ON Kalender.ID = VerlofLijn.DagID
WHERE
VerlofLijn.Persnummer = @pnummer;
所以基本上我在表Kalender
中有一个日历。
每天都有唯一的ID(Kalender.ID
)。在第二个表格(VerlofLijn
)中,匹配的Kalender.ID
与VerlofLijn.DagID
以及唯一的员工编号leavetype
一起存储在Persnummer
中。
我想要实现的是一个从日历加载所有日期的查询,并且 - 如果当前登录的员工已经离开数据库 - 在正确的日期旁边显示。
因此,如果该员工的数据库中根本没有请假,我仍然需要显示日历,以便下一步他可以在个人日历中添加休假。
我可以为每个员工创建一个个人日历,但必须有一个更好的方法,而不需要在数据库中存储大量数据的开销,这将使查询花费更多的时间来搜索和完成。
答案 0 :(得分:1)
请尝试此查询
SELECT
Datum, LeavetypeID
FROM
Kalender
LEFT JOIN
VerlofLijn
ON Kalender.ID = VerlofLijn.DagID AND VerlofLijn.Persnummer = @pnummer;
说明:正如您所说
我想要实现的是一个加载日历中所有日期的查询
你应该使用Kalender LEFT JOIN VerlofLijn
答案 1 :(得分:0)
您是否尝试过LEFT OUTER JOIN?
SELECT
Datum, LeavetypeID
FROM
Kalender
LEFT OUTER JOIN
VerlofLijn ON Kalender.ID = VerlofLijn.DagID
WHERE
VerlofLijn.Persnummer = @pnummer;
即使表VerlofLijn中没有匹配项,以及VerlofLijn中的所有常用值,您也可以从Kalendar获取所有值。
您可以在此处找到一些示例:What is the difference between "INNER JOIN" and "OUTER JOIN"?