2013-03-05 75 views
0

enter image description here涉及日期的操作Select語句(高齡插圖中,最新的)

我有這樣的表,用戶在主頁將選擇一個發的ID,這將能夠打印數據的特定數據。現在我想要實現的是能夠使用相同的FAID打印數據,例如它是一個,並且能夠獲得6的用戶ID(Eff_from = 2/3/2012),這是FAID的下一個日期= 1(Eff_to(2012/2/2)

$sql_exp = "SELECT top 1 b.LaptopID, b.Eff_to 
FROM dbo.users a 
     INNER JOIN dbo.FA_Laptop b 
      ON a.userID = b.UserID 
WHERE b.LaptopID= 
    (SELECT x.LaptopID 
    FROM FA_Laptop x 
    WHERE x.FAID = $faidf) order by b.Eff_to desc, b.FAID" 

與此代碼我可以只打印最新的日期與後者FAID

+0

你可以做的例子,問題多一點清楚了嗎?我不明白。你需要一種日期鏈嗎?你有哪個版本的Sql Server? – 2013-03-05 05:57:59

+0

更新了questo好先生。我試圖做的是當用戶選擇具有Eff_to(2/2/2012)的FAID = 1時,它將顯示具有日期的日期,該日期是下一個2/2/2012,這是FAID = 3。這些日期只是隨機的樣本 – Yinks 2013-03-05 06:07:33

回答

1

試試這個: - 。

Declare @FA_Laptop table 
(FAID int,LaptopID int,userId int,Eff_from date,Eff_to date) 

Insert into @FA_Laptop 
values 
(1,39,1,'1/1/2012','2/2/2012'), 
(2,39,4,'5/5/2012','7/7/2012'), 
(3,39,6,'2/3/2012','5/4/2012'), 
(4,39,8,'7/8/2012','12/24/2012') 

;with cte as 
(
Select FAID,LaptopID,userID,Eff_to 
from @FA_Laptop where FAID=1 //Get the value from your PHP page 
) 
Select c.faid,f.faid as nextFAID,c.userID,f.userId as nextUserID,c.laptopId, 
f.laptopId as nextLaptopID from cte c left join @FA_Laptop f 
on f.Eff_from=dateadd(day,1,c.eff_to) 

Result : 

faid nextFAID userID nextUserID laptopId nextLaptopID 
1  3    1  6   39    39 

使用子查詢

Select temp.faid,temp.userID,f.userId as nextUserID,temp.laptopId, 
f.laptopId as nextLaptopID 
from 
(
Select FAID,LaptopID,userID,Eff_to 
from @FA_Laptop where FAID=1 
) temp 
left join @FA_Laptop f 
on f.Eff_from=dateadd(day,1,temp.eff_to) 

更新時間:

SELECT temp.LaptopID, temp.Eff_to,f.userId as nextUserID, 
     f.laptopId as nextLaptopID 
FROM dbo.users a 
inner join 
(
    Select FAID,LaptopID,userID,Eff_to 
    from FA_Laptop where FAID=$faidf 
) temp 
on a.userID = temp.UserID 
left join FA_Laptop f 
on f.Eff_from=dateadd(day,1,temp.eff_to) 

更新2:

檢查sqlFiddle的結果

查詢是

SELECT fl.userId as nextUserID,fl.eff_from, 
     fl.laptopId as nextLaptopID 
FROM FA_Laptop f 
inner join FA_Laptop fl 
on fl.Eff_from=dateadd(day,1,f.eff_to) and f.faid=$faidf 
inner join users a 
on a.userID=fl.userID 
+0

對不起,我的好先生,但我很困惑,這是什麼,並只能勉強分析它。你可以以某種方式簡化它,或將它連接到我上面的「嘗試」代碼?對不起,我覺得這聽起來很粗魯,但我非常感謝這一點,但我想我知道什麼是我的大腦太多了,現在嘿嘿 – Yinks 2013-03-05 06:14:02

+0

檢查我更新的答案。 – praveen 2013-03-05 06:29:18

+0

請告訴我用戶表中存在哪些數據,如果您可以發佈您想要的結果 – praveen 2013-03-05 06:33:44