Как реализовать запрос к базе и вывод информации

artzor
На сайте с 30.10.2008
Offline
111
661

Доброго времени суток!!!

Есть база данных, примерная структура такова:

--id-- | --day(дата)--|--file(имя файла)--|--down (кол-во загрузок)--

-- 1 -- | -- 11052010 -- | --1.exe-- | -- 3 --

-- 1 -- | -- 11052010 -- | --2.exe-- | -- 2 --

-- 1 -- | -- 11052010 -- | --3.exe-- | -- 1 --

-- 1 -- | -- 10052010 -- | --1.exe-- | -- 5 --

-- 1 -- | -- 10052010 -- | --2.exe-- | -- 4 --

-- 1 -- | -- 10052010 -- | --3.exe-- | -- 3 --

Запросом

$db->query("SELECT * FROM ".$basepref."_down_rating_down WHERE day=".$daynow." ORDER BY down DESC LIMIT ".$limit."");

Я достаю 10 файлов "за сегодня" и вывожу на страничку - все ок.

Запросом

$db->query("SELECT * FROM ".$basepref."_down_rating_down WHERE day>".$dayweek." OR day<".$daynow." ORDER BY down DESC LIMIT ".$limit."");

Я достаю десять записей за недельный период и вывожу на экран, но, значение down выводиться большее за данный период времени.

Вопрос - как мне суммировать поля down для поля file за определенный период? То есть если применить это все к приведенному выше примеру базы сейчас выводиться:

1.exe - 5,

а нужно:

1.exe - 8.

p.s. Если что не так, сорри, пытался объяснить по понятнее ... Заранее благодарю за помощь ...

Alex91
На сайте с 30.12.2007
Offline
258
#1

GROUP BY id

C Уважением, Алексей
skAmZ
На сайте с 04.09.2009
Offline
122
#2

select sum(down), file from table group by file
artzor
На сайте с 30.10.2008
Offline
111
#3

Спасибо, буду пробовать

P
На сайте с 08.03.2007
Offline
250
#4

и проверьте, OR day<".$daynow." делает ли то что Вы хотели.

artzor
На сайте с 30.10.2008
Offline
111
#5
Pilat:
и проверьте, OR day<".$daynow." делает ли то что Вы хотели.

Ой, благодарствую, ошибку поправил ...

Так, а смысл было писать day>".$dayweek." OR day<".$daynow." (я таким образом вычислял числа входящие в недельный срок), если достаточно было написать day>".$dayweek." ... (мысли в слух)

skAmZ
На сайте с 04.09.2009
Offline
122
#6

artzor, ваш вариант правильный для произвольной недели, разьве что оператор "или" заменить на "и"... Но даже в этом случае лучше отталкиваться от одной даты... К примеру: day>".$dayweek." and day<".date('Y-m-d', strtotime($dayweek)+7*24*60*60)

P.S. коммент на ваши мысли ;)

artzor
На сайте с 30.10.2008
Offline
111
#7

Вот как у меня сейчас:

$daynow=date("dmY"); //Текущая дата

$dayweek=date('dmY', time()-7*24*60*60); //Неделю назад

$daymonth=date('dmY', time()-30*24*60*60); //Месяц назад

$raninqweek = $db->query("SELECT * FROM ".$basepref."_down_rating_down WHERE day>".$daymonth." AND day<".$daynow." ORDER BY down DESC LIMIT ".$limit."");

При такой реализации - данные не выводяться совсем, запинка на выводе данных за месяц. Может ли это быть связано с тем что записи есть только за последние три дня ? Или MySQL все равно - выдаст то что есть, лишь бы удовлетворяло запрос ?

ewg777
На сайте с 04.06.2007
Offline
225
#8
Вот как у меня сейчас:

$daynow=date("dmY"); //Текущая дата
$dayweek=date('dmY', time()-7*24*60*60); //Неделю назад
$daymonth=date('dmY', time()-30*24*60*60); //Месяц назад

Не представлял, что Вы будет не то и не туда так использовать.

artzor
На сайте с 30.10.2008
Offline
111
#9
ewg777:
Не представлял, что Вы будет не то и не туда так использовать.

Да, я такой ... :)

Я понимаю что делаю все через одно место, потому как сам вижу кучу однотипного кода который можно оптимизировать, но, пока хочу сделать так как получиться, а дальше сесть и довести все до ума ...

ewg777
На сайте с 04.06.2007
Offline
225
#10
artzor:
Да, я такой ... :)

Я понимаю что делаю все через одно место, потому как сам вижу кучу однотипного кода который можно оптимизировать, но, пока хочу сделать так как получиться, а дальше сесть и довести все до ума ...

О какой оптимизации идёт речь? Глупо получается, но дело Ваше. Удачи.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий