Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2012, 22:43   #1
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию Получение фоток и их оценок.

1 таблица фоток (|id|date|img|)
2 таблица оценок (|id|photo_id|login|)

Запрос:

SELECT COUNT(t1.id) AS rait,t1.id,t1.date,t1.img FROM img t1,rait t2 WHERE t1.id = t2.com_id GROUP BY t1.id,t1.id,t1.date,t1.img ORDER BY t1.date DESC LIMIT 5;

В "rait" мы получаем количество оценок (записей) в таблице оценок к определенной фотке. Теперь нужно сделать положительные и отрицательные оценки (делаем таблицу оценок теперь так - |id|photo_id|login|type|). Теперь в type если стоит 0 - плохая оценка, если 1 - хорошая оценка. Теперь в "rait" нужно получить их разницу. КАК?

Последний раз редактировалось Abuhamed; 18.02.2012 в 22:49.
Abuhamed вне форума Ответить с цитированием
Старый 18.02.2012, 22:51   #2
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Может будет полезно: http://www.mysql.ru/docs/man/Arithmetic_functions.html
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 18.02.2012, 22:58   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Abuhamed Посмотреть сообщение
А теперь нужно от хороших отнять плохие в запросе и получить в ответе от мускула их разницу. НО КАК?!
Простой вариант:
Создаем две переменные - $good = 0 и $bad = 0.
Проходим циклом по результатам запроса оценок для данного фото.
Соответственно типу текущей оценки - $good++ или $bad++.
По окончании цикла:
$good = количество хороших оценок
$bad = количество плохих оценок
Andkorol вне форума Ответить с цитированием
Старый 18.02.2012, 23:11   #4
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Простой вариант:
Создаем две переменные - $good = 0 и $bad = 0.
Проходим циклом по результатам запроса оценок для данного фото.
Соответственно типу текущей оценки - $good++ или $bad++.
По окончании цикла:
$good = количество хороших оценок
$bad = количество плохих оценок
Автор написал, что это надо осуществить одним запросом.
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 18.02.2012, 23:33   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от spein Посмотреть сообщение
Автор написал, что это надо осуществить одним запросом.
Это и будет один запрос - мой пост описывает процесс обработки результатов этого запроса.
Andkorol вне форума Ответить с цитированием
Старый 18.02.2012, 23:43   #6
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Я думал, что расчеты должен произвести MySQL сервер...
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 18.02.2012, 23:50   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от spein Посмотреть сообщение
Я думал, что расчеты должен произвести MySQL сервер...
Кому должен..?

Можно сделать и средствами MySQL, в одном запросе, с использованием под-запросов.
Мой вариант проще для понимания и реализации, а кто будет считать - не так уж важно, разницы в этом случае практически нет.
Судя по запросу, представленному ТС - с MySQL у него не очень...
Andkorol вне форума Ответить с цитированием
Старый 19.02.2012, 00:17   #8
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию

Хорошо, а как получить тогда не rait а ban и good?
Abuhamed вне форума Ответить с цитированием
Старый 19.02.2012, 08:58   #9
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

сделайте при отриц оценке -1, при положительной 1
тогда рейтинг можно вычислить как SUM(t1.type)
ADSoft вне форума Ответить с цитированием
Старый 19.02.2012, 13:31   #10
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию

Интересный вариант! Спасибо, попробую!
Abuhamed вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автоматизировать процесс подсчета оценок на соревнованиях doublek Microsoft Office Excel 16 06.11.2011 10:49
Создание формы для заполнения оценок udawww БД в Delphi 2 01.06.2011 19:23
метод экспертных оценок Jene4ka Общие вопросы Delphi 0 04.05.2011 15:33
Вывести 5 оценок Европеец Общие вопросы C/C++ 3 14.05.2010 09:39
Перевод фоток в чб 1quick1 PHP 1 27.12.2006 20:18