Forum Webscript.Ru

Общие => Базы данных => Тема начата: Макс от 20 Декабря 2001, 18:43:44

Название: SELECT
Отправлено: Макс от 20 Декабря 2001, 18:43:44
Помогите с SELECT-ом.
Есть таблица:
url - адрес
name - название файла
hits - кол-во скачиваний.

name НЕ уникальное, то есть может повторятся (один и тот же файл может лежать на нескольких серверах, соответственно для него может быть несколько записей в таблице).
Нужно SELECT-ом получить не повторяющиеся имена файлов и для каждого суммарное количество скачиваний.
То есть если есть в таблице
http://www.xxx.xxx|pkunzip.zip|20
http://www.list.ru|php.zip|10
http://www.webscript.ru|pkunzip.zip|10

то должно выдать
pkunzip.zip|30
php.zip|10

Пока кроме создания лишней таблицы с полями
name
sumhits
где бы name было уникальным именем файла а sumhits - суммарное количество кликов,
ничего больше в голову не приходит.
Название: SELECT
Отправлено: ThE0ReTiC от 20 Декабря 2001, 20:52:22
Хреновина. Можно сделать. Не самое элегантное решение, но работает. Просто голова болит сильно  - мешает думать.
Ниже работающий код:

$res = mysql_query("SELECT DISTINCT name FROM trest") or die(mysql_error());

    while($nm = mysql_fetch_array($res))
    {
    $kol = mysql_query("SELECT SUM(pips) AS ps FROM trest WHERE name=\'$nm[name]\'") or die(mysql_result());
    $kkol = mysql_result($kol,0,\'ps\');
    echo$nm["name"].\'->\'.$kkol.\'
\';

    }
Название: SELECT
Отправлено: vladsu от 20 Декабря 2001, 23:56:56
Hi.

не знаю точно синтаксис, но примерно так:

select name, sum(hits)
  from tab
group by 1;
Название: SELECT
Отправлено: ThE0ReTiC от 21 Декабря 2001, 12:44:47
Совершенно верно. Я же говорил, что мое решение не самое правильное. Только правильный запрос выглядид так:

SELECT name, sum(hits) AS pps  FROM trest GROUP BY name

А потом выводим:
while($nm = mysql_fetch_array($res))
    {
    echo$nm["name"].\'->\'.$nm["pps"];
        }
Название: SELECT
Отправлено: Макс от 21 Декабря 2001, 17:24:11
Все оказалось так просто
СПАСИБО!