2016-10-14 250 views
0

下午好,我正在嘗試製作一個頁面,可以查看我今天所做的哪些老闆。我有兩張桌子(有老闆的桌子和有老闆時間的桌子)。現在我需要向所有老闆展示,但是對於他們中的每一個,我只想顯示老闆出現的最近時間。從一個表中選擇所有行,從另一個表中選擇每個行的一個特定值

的選擇到目前爲止看起來像這樣:

$timePlus = strtotime($currentTime) + 60*60*2.2; 
$timePlusForm = date("H:i:s", $timePlus); 
$userNametoLower = strtolower($userName); 
$userTableName = "".$userNametoLower."_bosses"; 
$currentTime = date("H:i:s", time()); 
"SELECT `bossTime`.`ID`, `bossTime`.`bossID`, `bossTime`.`time`, `$userTableName`.`ID`, `$userTableName`.`name`, 
        `$userTableName`.`zone`, `$userTableName`.`map`, `$userTableName`.`waypointCode`, `$userTableName`.`bossDone` 
        FROM `bossTime` LEFT JOIN `$userTableName` ON `$userTableName`.`ID` = `bossTime`.`bossID` 
        WHERE `bossTime`.`time` BETWEEN '$currentTime' AND '$timePlusForm' 
        GROUP BY `bossTime`.`bossID` 
        ORDER BY `bossTime`.`time` ASC"; 

的問題是,這種選擇不挑時間從表中下一個最接近的值。我也嘗試了BETWEEN,但它也沒有奏效(一些老闆得到了正確的最近時間,但其他老闆獲得了第二近的時間)。任何想法如何解決這個問題都很受歡迎。

+0

我想你想的分鐘(' bosstime'.'time')爲每個老闆 –

+0

是的,第一行不是問題。如果我使用BETWEEN條件,我可以獲得所有的時間,但它只返回11條記錄(有13個老闆)。 亞歷克斯 - 但是,這將選擇表中的最低值,我需要得到大於currentTime的第一個值。 – Asassin53

+0

之間基本上是>和<。所以如果你的兩個boss會在$ timePlusForm後重新生成,你將不會得到它們(11行而不是13行)。只使用>對我來說更有意義。 –

回答

0

我刪除GROUP BY和不變的情況到bossTime.time> = '$ currentTime的' AND bossTime.time < = '$ timePlusForm' 出於某種原因,它的工作原理

相關問題