2016-10-14 204 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' 出于某种原因,它的工作原理

相关问题