Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RFpro.ru: Программирование на PHP


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

vladisslav
Статус: 5-й класс
Рейтинг: 1053
∙ повысить рейтинг »
Волков Алексей aka Lupo
Статус: 5-й класс
Рейтинг: 371
∙ повысить рейтинг »
Палян Александр Михайлович
Статус: 6-й класс
Рейтинг: 309
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / PHP

Номер выпуска:1193
Дата выхода:22.01.2010, 00:30
Администратор рассылки:Товарищ Бородин, Модератор
Подписчиков / экспертов:643 / 198
Вопросов / ответов:1 / 1
IRC-канал по теме:#php

Вопрос № 176085: Здравствуйте эксперты. Помогите, пожалуйста, довести до ума запрос к базе данных. Есть страница с тремя фотоконкурсами, таких конкурсов постоянно будет три.Для каждого конкурса выводится фотография лидера. Если у фотографий во всех конкурсах...



Вопрос № 176085:

Здравствуйте эксперты.
Помогите, пожалуйста, довести до ума запрос к базе данных.
Есть страница с тремя фотоконкурсами, таких конкурсов постоянно будет три.Для каждого конкурса выводится фотография лидера.
Если у фотографий во всех конкурсах кол-во голосов 0, то все три конкурса не выводятся, а выводит только два конкурса, например, "1 конкурс", "1 конкурс", "2 конкурс".Все три конкурса появляются только тогда, когда фото наберут какое то кол-во голосов(сделать это можно только через админку).
При голосовании за любую фотографию, уже к существующим голосам, плюсуется 1, нет ни каких расчётов, просто целое число.
Задача в том, чтобы при любом кол-ве голосов, для любой фотографии, выводились все три конкурса.
Как дописать или изменить запрос к базе данных?
Вот ссылка для наглядности
http://test.roganov.kharkov.ua/d4/contest.php
В прикреплённом файле (2.1 кб) - с ам запрос, структура базы данных и дамп базы.

Отправлен: 16.01.2010, 23:02
Вопрос задал: Slo_nik, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает PVS@Lviv, Профессионал :
Здравствуйте, Slo_nik.

Вы выбрали максимальный голос, но если фотографий с таким голосом будет несколько в одном конкурсе, то он отодвинет остальные за пределы указаного Вами "LIMIT 3" . Надо всегда обеспечит выбор только одной фотографии в пределах конкурса, например с максимальным id, и выводить только ее. При таких условиях можете увеличить/уменьшить количество конкурсов - все равно будет выводится в каждом один из лидеров (отпадает необходимость в "LIMIT 3"). Запрос получается приблизительно такой:

$query = "SELECT con.small AS small,
con.titleph AS title,
con.id_contest AS id_us,
con.id_contest_cat AS id_con_us,
con.vote AS mvote,
cont.id_contest_cat AS id_cont,
cont.name AS name
FROM(
select q.id_contest_cat, max(q.id_contest) as id_contest

FROM (SELECT contest.id_contest_cat,
MAX(contest.vote) AS mvote
FROM contest
GROUP BY contest.id_contest_cat) AS cq
LEFT JOIN contest AS c ON (cq.mvote = contest.vote) and (cq.id_contest_cat=contest.id_contest_cat)
GROUP BY q.id_contest_cat
) as q
LEFT JOIN contest AS con ON (q.id_contest = con.id_contest)

LEFT JOIN contest_cat AS cont ON (cont.id_contest_cat = con.id_contest_cat)
ORDER BY con.vote DESC";

Ответ отправил: PVS@Lviv, Профессионал
Ответ отправлен: 18.01.2010, 11:09

Оценка ответа: 5
Комментарий к оценке:
Благодарю за помощь, всё отлично работает.

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 258711 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.13 от 28.12.2009

    В избранное