我想用幾個條件來選擇基於開始和結束日期的記錄。基本上我想要什麼都沒有結束日期,或者在給定的時間段內開始或者在同一給定的時間段內結束。任何幫助或方向如何可能完成將非常感激。我在下面的查詢中包含WHERE部分和參數綁定,但如果需要的話可以包含更多的參數。在SQL中嵌套和/或者哪裏
$periodsCxn->bindParam(':PositionID',$PositionID);
$periodsCxn->bindParam(':Start',$firstPayPeriod);
$periodsCxn->bindParam(':End',$lastPayPeriod);
$periodsCxn->bindParam(':Start2',$firstPayPeriod);
$periodsCxn->bindParam(':End2',$lastPayPeriod);
WHERE
POSITION_PERIOD.PositionID = :PositionID AND
(
(
POSITION_PERIOD.EndDate = '1900-01-01'
OR
POSITION_PERIOD.EndDate IS NULL
)
OR
(
POSITION_PERIOD.StartDate BETWEEN :Start AND :End
OR
POSITION_PERIOD.EndDate BETWEEN :Start2 AND :End2
)
)
你到底想要做什麼?爲什麼1900年結束日期? P.S:不需要使用像Start2和End2這樣的不同變量,只需在每次需要時使用原始變量即可。 –
看起來就像是從這裏的1或2或3或4(除了分隔和子句之外,沒有額外的括號)。什麼不工作? – mcalex
@Swift是的,你必須使用不同的佔位符名稱。事實上,你認爲你不告訴我,你不[禁用模擬準備](http://stackoverflow.com/a/12202218/889949) - PDO模擬準備將允許你做到這一點,真正的準備做不。 – DaveRandom