Проблем със MySQL заявка

FestarBG

Registered
Здравейте,
имам следните 2 таблици - predictions и leagues.
Искам да изкарам прогнозите (записите от predictions) за последните 3 дни, за които има, от определена лига.
Ако приемем, че имам id-то на лигата, ето ви структурата на таблицата predictions:
Код:
id	int(11)
startTime	datetime
leagueId	int(11)
prediction     varchar(255)

Ако има прогнози за 26,27,28 и 29-ти Август, то на мен ми трябват прогнозите за последните три дни (27,28 и 29-ти), като ми трябва нещо като
array(0 => array('прогнози', 'за', 'първата', 'дата'),
1 => ...........

Поздрави.
 
сложи 1 поле timestamp , в което ще записваш времето в секунди на запис ... и заявката така става много проста ..

PHP:
$den = mktime(0,0,0,date('d'),date("m"),date("Y")); // 30 avgust ili dnes
$nazad_s_dni = 3;
$time  = ($den - ($nazad_s_dni*86400));

$sql = mysql_query("SELECT * FROM `table` WHERE `timestamp` >= '$time'");
while( ...){
}
сега .. $den = mktime(0,0,0,date('d'),date("m"),date("Y")); това в този си вид е идентично на това time() , НО с разликата, че първото може да се модифицира .. за пример на мен ми трябва да вида таймстамп-а на 12 април 2012 г. - то тогава $den = mktime(0,0,0,12,4,2012); .. дано си ме разбрал .. :)

п.с. Ако в това StartTime поле записваш таймстамп-а .. изпозлвай него .. ;)
 
По твоя начин как ще разгранича кои записи са от 27,28 или 29-ти например? А и не ми се добавя ново излишно поле, мисля че едно поле datetime е достатъчно..
 
Можеш да ги групираш по DATE_FORMAT(startTime,'%Y%m%d') и да конкатнеш резултатите, като след твоа в PHP-то просто си ги explode-неш и ще имаш желания масив :idea:
 
Когато ги групирам по DATE(startTime) (което е същото като с DATE_FORMAT), за всеки ден излиза само по един запис, а не всички..?
 
[sql]SELECT *, DAY(startTime) as getday FROM predictions WHERE UNIX_TIMESTAMP(`startTime`) > " . strtotime('-3 days') . " GROUP BY startTime, id ORDER by getday ASC[/sql]

Нормално е когато групираш по дата ако има 5 записа за 1 и съща дата да хване само 1 запис. Трябва да зададеш и някакъв друг критерии, по който ако датата им е една и съща да ги изкарва.

4859.jpg


Това е leagues

4858.jpg


Тази заявка връща това. Не знам дали това е желаният резултат но от масива можеш да ги викаш индивидуално по geyday.
 

Back
Горе