Вопрос по MySQL - Форум успешных вебмастеров - GoFuckBiz.com - Страница 2
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB89.7026
BTC/USD68532.9441
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 02.05.2017, 23:27
Start Post: Вопрос по MySQL 
  #11
mamba
Mamber
 
Аватар для mamba
 
Регистрация: 28.12.2010
Адрес: Green Street
Сообщений: 3,197
Бабло: $478630
По умолчанию

Есть БД, в ней таблица
в ней поля, допустим:

id date Content

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

Например:

1 2017-05-02 20:45:05 Спомони
2 2017-05-01 19:45:05 Дигг
3 2017-05-01 18:45:05 Бздедектив

А надо поле даты перевернуть, но чтобы контент и ID остались на своих местах.

Т.е. чтобы на выходе получилось

1 2017-05-01 18:45:05 Спомони
2 2017-05-01 19:45:05 Дигг
3 2017-05-02 20:45:05 Бздедектив


Какие комманды или действия нужно провернуть?
mamba вне форума  
Старый 03.05.2017, 14:53   #12
creator123
Senior Member
 
Аватар для creator123
 
Регистрация: 05.01.2008
Сообщений: 1,676
Бабло: $213930
По умолчанию

update table set date=dateadd('2017-01-01',INTERVAL id HOUR)
creator123 вне форума  
Старый 03.05.2017, 15:37   #13
Soba
Senior Member
 
Регистрация: 02.05.2014
Сообщений: 628
Бабло: $257430
По умолчанию

дабы не плодить темы, прошу помощи тут (гоуфак сила!)

есть столбец percent в который записывает процент в виде 37.54

данной командой я выбираю топового игрока у которого выше всего процент
UPDATE tournament SET winner=1 WHERE winner=0 ORDER BY (`percent`+0) DESC LIMIT 1

мне нужно взять ТОП 3 игроков у которых самый высокий процент и рандомно выбрать одного победителя из этих игроков.

подскажите как такое сделать?

Последний раз редактировалось Soba; 03.05.2017 в 15:43.
Soba вне форума  
Старый 03.05.2017, 15:43   #14
xanxy
Senior Member
 
Регистрация: 18.08.2010
Сообщений: 360
Бабло: $66120
По умолчанию

Цитата:
Сообщение от Soba Посмотреть сообщение
дабы не плодить темы, прошу помощи тут (гоуфак сила!)

есть столбец percent в который записывает процент в виде 37.54

данной командой я выбираю топового игрока у которого выше всего процент
UPDATE tournament SET winner=1 WHERE winner=0 ORDER BY (`percent`+0) DESC LIMIT 1");

мне нужно взять ТОП 3 игроков у которых самый высокий процент и рандомно выбрать одного победителя из этих игроков.

подскажите как такое сделать?
Не надо стараться сложную логику запихнуть в запрос. Лучше сделать два простых, select + update, чем один сложный.
xanxy вне форума  
Старый 03.05.2017, 15:47   #15
Soba
Senior Member
 
Регистрация: 02.05.2014
Сообщений: 628
Бабло: $257430
По умолчанию

Цитата:
Сообщение от xanxy Посмотреть сообщение
Цитата:
Сообщение от Soba Посмотреть сообщение
дабы не плодить темы, прошу помощи тут (гоуфак сила!)

есть столбец percent в который записывает процент в виде 37.54

данной командой я выбираю топового игрока у которого выше всего процент
UPDATE tournament SET winner=1 WHERE winner=0 ORDER BY (`percent`+0) DESC LIMIT 1");

мне нужно взять ТОП 3 игроков у которых самый высокий процент и рандомно выбрать одного победителя из этих игроков.

подскажите как такое сделать?
Не надо стараться сложную логику запихнуть в запрос. Лучше сделать два простых, select + update, чем один сложный.
т.е. сначала выбрать 3-х человек из топа, а потом апдейтнуть с LIMIT 1 ?
Soba вне форума  
Старый 03.05.2017, 15:50   #16
xanxy
Senior Member
 
Регистрация: 18.08.2010
Сообщений: 360
Бабло: $66120
По умолчанию

Цитата:
Сообщение от Soba Посмотреть сообщение
Цитата:
Сообщение от xanxy Посмотреть сообщение
Цитата:
Сообщение от Soba Посмотреть сообщение
дабы не плодить темы, прошу помощи тут (гоуфак сила!)

есть столбец percent в который записывает процент в виде 37.54

данной командой я выбираю топового игрока у которого выше всего процент
UPDATE tournament SET winner=1 WHERE winner=0 ORDER BY (`percent`+0) DESC LIMIT 1");

мне нужно взять ТОП 3 игроков у которых самый высокий процент и рандомно выбрать одного победителя из этих игроков.

подскажите как такое сделать?
Не надо стараться сложную логику запихнуть в запрос. Лучше сделать два простых, select + update, чем один сложный.
т.е. сначала выбрать 3-х человек из топа, а потом апдейтнуть с LIMIT 1 ?
Снача выбрать 3-х, в скрипте взять одного рандомного, потом апдейтнуть по id
xanxy вне форума