我有一个迁移到新架构的数据库。旧数据库没有参照完整性,所以我需要摆脱大量重复。
我有RegisteredVehicles
的表格:
id | plate | state
# | 1425 | il
# | 3322 | il
和ParkingRequests
:
id | date | registeredVehicleId (FK)
# | 2/2/12 | #
相关关系是一对多的 - 一个注册的车辆可以满足许多要求。
以下查询通过Plate
和State
获取每个重复记录,并输出每个RegisteredVehicle's
ID。
select Id, Plate, [State] from RegisteredVehicles where Plate in (
select plate from RegisteredVehicles group by Plate having count(*) > 1
)
这给了我这样的东西
Id Plate State
036d59f1-d928-40f2-b373-049122202bff 0000000 IL
615e2fab-8b43-4e42-b6f0-268038bba949 0000000
我正在尝试获取上述代码块中返回的每个车辆行的停车请求数。像这样的东西
Id | Plate | State | # Requests
1 | 222 | IL | 2
2 | 333 | IL | 4
但我遇到的问题是使查询比现在更复杂。这本身花了我很长时间才开始工作。
答案 0 :(得分:0)
请尝试此查询:
SELECT
A.ID,
A.PLATE,
A.STATE AS [STATE],
COUNT(A.ID) AS [NO OF REQUESTS]
FROM REGISTEREDVEHICLES A
LEFT JOIN PARKINGREQUESTS B
ON B.REGISTEREDVEHICLEID = A.ID
WHERE
A.PLATE IN(
SELECT
PLATE
FROM REGISTEREDVEHICLES
GROUP BY PLATE
HAVING COUNT(*) > 1
)
GROUP BY
A.ID,
A.PLATE,
A.STATE