2016-10-14 10 views
0

午後の午後、私は今日私が行った上司を確認できるページを作ろうとしています。私は2つのテーブル(上司とテーブル、上司とのテーブル)を持っています。今私はすべての上司を見せる必要がありますが、彼らのそれぞれのために、私は上司がスポーンする最も近い時間を示したいだけです。テーブルからすべての行を選択し、別のテーブルから各行の特定の値を1つ選択してください

選択は、これまでのようになります。

$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を試してみましたが、それもうまくいきませんでした(いくつかのボスは正確な最短時間を得ましたが、他のボスは2番目に近い)。どのようにこれを解決するための任意のアイデアは歓迎されます。

+0

の作品bossTime'.'time')各ボス –

+0

ええ、最初の行は問題ではありません。 BETWEEN条件を使用すると、すべての時間を正しく取得できますが、11レコードしか返しません(13人のボスがあります)。 Alex - しかし、それはテーブルの中で最も低い値を選ぶでしょう。私はcurrentTimeより大きい最初の値を取得する必要があります。 – Asassin53

+0

の間には基本的に>と<があります。したがって、あなたの上司のうち2人が$ timePlusFormの後にrespawnすると、あなたはそれらを取得しません(13ではなく11行)。 >だけを使用すると私にはもっと意味があります。 –

答えて

0

私は `(あなたが分をしたいと思いますGROUP BYを削除し、WHERE bossTime.time> = '$ CURRENTTIME' AND bossTime.time < = '$ timePlusForm' に条件を変更し、何らかの理由でそれが

関連する問題