我正在處理類型的應用程序。所以,我有一組放倒像下面的記錄: 實施sql邏輯的一個麻煩的要求
Select Ways.*, ErrorFlag
from Ways with(no lock)
inner join Locations with(no lock)
on Locations.WayId = Ways.WayId
在上面的設置我會得到具有位置的所有方式。
現在我有一個規定,以顯示一個標誌,每個方式,使得
條件1)如果過程中的任何位置未遵守其規則。
規則,每個位置應該有開始時間<結束時間。
所以,現在我只是有一個算法,因爲我不擅長實現查詢。
對於我已有的結果集, 步驟1)我將創建一個函數,該函數將接收已在結果集中的WayId。
步驟2)函數將從位置表中選擇所有位置,其中wayid = @WayId。
步驟3)遍歷在步驟2中選擇的位置的每一行ID,並檢查開始時間>結束時間,並且如果它說是,它將返回true,否則它將繼續前進,並且在通過每個行,它會返回false。
我應該如何實現這一點。你能提出一些建議嗎?或者如果你有更好的方法。請不要共用一個查詢示例,這樣它會變得有點容易讓我明白..
表結構如下:
方式
WayId colorcode weight length
1 red 50 500m
2 blue 100 200m
位置
LocationId WayId Starttime Endtime
1 1 12:00AM 11:00AM
2 1 1:00 PM 2:00 PM
3 1 3:00 PM 4:00PM
輸出:下面的輸出是需要的,WayId = 1的方式有位置,所以它會顯示,但id = 2的方式沒有任何位置,所以它不會顯示。
2)的方式有三個位置,以便將數顯
3)的方式應該表現出ErrorFlag =真爲它的一個位置有開始時間比結束時間大。
WayId colorCode weight length ErrorFlag Locations
1 red 50 500 true 3
你如何確定12:00 am大於11:00 am? – dfundako
「Locations」表中的「Starttime」和「Endtime」列的SQL類型是什麼? – 3N1GM4