Ms access 如何正确创建SQL查询

Ms access 如何正确创建SQL查询,ms-access,Ms Access,下午好 我正在为某人开发一个数据库,用于跟踪他们在业务中使用的车辆。由于车辆在到期时有新的牌照发放给他们,业务部门希望跟踪每辆车的当前牌照以及之前发放给每辆车的所有牌照 我已经为车辆创建了一个表,tbl_车辆 我还创建了一个车牌表,tbl_车牌 因为每辆车都有多个车牌记录。我需要在表格frm_vehicles(每辆车的某些数据都会更新)上只显示要显示的最新车牌号。即使车牌过期,也需要这样做…即…不再有效 我遇到的问题是,我没有足够的SQL技能来构造只返回每辆车最新车牌的查询。我写了下面

下午好

我正在为某人开发一个数据库,用于跟踪他们在业务中使用的车辆。由于车辆在到期时有新的牌照发放给他们,业务部门希望跟踪每辆车的当前牌照以及之前发放给每辆车的所有牌照

我已经为车辆创建了一个表,tbl_车辆

我还创建了一个车牌表,tbl_车牌

因为每辆车都有多个车牌记录。我需要在表格frm_vehicles(每辆车的某些数据都会更新)上只显示要显示的最新车牌号。即使车牌过期,也需要这样做…即…不再有效

我遇到的问题是,我没有足够的SQL技能来构造只返回每辆车最新车牌的查询。我写了下面的查询,它返回车辆主id和最近发行的车牌的过期日期

但是,当我尝试将车牌号添加到查询中时,它会返回为每辆车发放的所有车牌。这是一个问题,因为我需要查询只返回最近发行的车牌,不管它是否有效(未过期)

因此,我寻求的指导是如何构造这个查询,以便它只返回最近发行的车牌的车牌号,而不管其有效性如何

有人能给我指一下正确的方向吗

正如所建议的,下面是查询的文本

选择tbl_车牌号。车辆主id作为车辆,Max(tbl_车牌号。到期日期)作为到期日期,tbl_车牌号。车牌号 来自tbl_牌照 按tbl_车牌号、车辆主id、tbl_车牌号、车牌号分组

考虑:

SELECT tbl_License_Plates.* FROM tbl_License_Plates WHERE license_plate_master_ID IN  
(SELECT TOP 1 license_plate_master_ID FROM tbl_License_Plates AS Dupe WHERE  
Dupe.vehicle_master_ID = tbl_License_Plates.vehicle_master_ID ORDER BY date_issued DESC);
有关子查询的详细信息

另一种方法是通过具有车辆ID和发布日期的查询进行分组,并通过ID和日期字段上的复合链接与tbl_车牌进行内部连接。这将是一个不可更新的查询。

请考虑:

SELECT tbl_License_Plates.* FROM tbl_License_Plates WHERE license_plate_master_ID IN  
(SELECT TOP 1 license_plate_master_ID FROM tbl_License_Plates AS Dupe WHERE  
Dupe.vehicle_master_ID = tbl_License_Plates.vehicle_master_ID ORDER BY date_issued DESC);
有关子查询的详细信息


另一种方法是通过具有车辆ID和发布日期的查询进行分组,并通过ID和日期字段上的复合链接与tbl_车牌进行内部连接。这将是一个不可更新的查询。

考虑使用Max函数返回Max valid date,可以在Google上找到很多关于该函数的信息。比如:

SELECT tbl_License_Plates.vehicle_master_id, Max(tbl_License_Plates.date_expires) AS 
MaxOfdate_expires
FROM tbl_License_Plates
GROUP BY tbl_License_Plates.vehicle_master_id;

考虑使用Max函数返回Max有效日期,可以在谷歌上找到很多关于该函数的信息。比如:

SELECT tbl_License_Plates.vehicle_master_id, Max(tbl_License_Plates.date_expires) AS 
MaxOfdate_expires
FROM tbl_License_Plates
GROUP BY tbl_License_Plates.vehicle_master_id;

如果有人希望帮助您至少避免重写代码,则最好将表作为文本而不是图像发布。如果有人希望帮助您至少避免重写代码,则最好将表作为文本而不是图像发布。