0

我的数据库中有一个租用模式。

它有 3 个表,user、rentingTrack 和 lock。

用户具有唯一元素 RFIDCode。在rentingTrack 中,我可能有用户(他或她至少租过一次)或没有用户(他/她从未租过)。如果用户租用我需要最后一次租用的 returnLock,因为rentingID 是自动递增的,它是 max(rentingID)。使用锁表我得到了parkingID,我需要的数据。

在此处输入图像描述

问题是如何获取parkingID,我有一半的查询:

 SELECT  u.userID, l.parkingID

 FROM locks l, user u

LEFT JOIN (SELECT r1.* FROM rentingTrack r1 INNER JOIN 
(SELECT userID, MAX(rentingID) maxRentingID FROM rentingTrack GROUP BY userID) r2 
on r1.rentingID = r2.maxRentingID) r on u.userID = r.userID 

 WHERE u.userCodeRFID= 3166681355

我需要的是,如果 userID 不在rentingTrack 表中,我得到:

   userID   |  parkingID
  ----------+-----------
        34  |     NULL 

如果 userID 在rentingTrack

   userID   |  parkingID
  ----------+-----------
        34  |        5

如何完成查询以获取parkingID?

4

2 回答 2

1

尝试这个。(需要一些重复的样本数据)

select distinct u.userID,l.parkingID
from users
left join rentingTrack r on u.userID=r.userID
left join locks l on r.returnLock=l.lockid
于 2013-04-30T07:59:39.167 回答
0
SELECT  u.userID, l.parkingID

FROM user u

LEFT JOIN (SELECT r1.userID, r1.returnLock
           FROM rentingTrack r1
           INNER JOIN 
              (SELECT userID, MAX(rentingID) maxRentingID
               FROM rentingTrack
               GROUP BY userID) r2 
           ON r1.rentingID = r2.maxRentingID) r on u.userID = r.userID 

LEFT JOIN locks l ON r.returnLock = l.lockID

WHERE u.userCodeRFID= 3166681355
于 2013-04-30T08:02:28.200 回答