Автор Тема: SELECT  (Прочитано 3434 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
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 - суммарное количество кликов,
ничего больше в голову не приходит.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
SELECT
« Ответ #1 : 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.\'
\';

    }
AS IS...

Оффлайн vladsu

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 271
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vladislavsurguchev.eu/
SELECT
« Ответ #2 : 20 Декабря 2001, 23:56:56 »
Hi.

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

select name, sum(hits)
  from tab
group by 1;
----------------------------------------------
Мой сайт чёрно-белых фотографий из разных уголков мира тут

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
SELECT
« Ответ #3 : 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"];
        }
AS IS...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
SELECT
« Ответ #4 : 21 Декабря 2001, 17:24:11 »
Все оказалось так просто
СПАСИБО!
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28