SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 03.01.2013 22:06:07

Mapshal
Участник
Зарегистрирован: 03.01.2013
Сообщений: 1

Помогите создать функцию

Нужно написать функцию, которая бы автоматически выводила следующее:

Например регистрируется новый пользователь он 10-й кто зарегистрировался, то есть id = 10, после регистрации ему должно выводится сообщение: первый пользователь - его id, второй - его id, и третий - его id. Когда регистрируется 11-й пользователь, ему должно выводится id 1, id 3, id 4, id 5, когда 12-й - id 1, id 6, id 7, id 8, когда 13-й - так же id 1, и следующие id 9, id 10, id 11, когда регистрируется 14-й - то же первый id, id 12, id 13 и тут, так как он 14-й ему снова должен вывести id 2, и так бесконечно.
Я мог бы написать не много проще но тогда никто бы не понял что я хочу. Теперь уже обьясню несколькими словами: ID 1 должен выводится постоянно каждому, и при этом должны выводится ещё 3 каждых последующих id. Пользователю который зарегистрировался например под id 12000 выводится первый id, id 11998, id 11999, третий id ему должен выпасть опять 2, и так заново.

Прошу знающих людей помочь с функцией.

Неактивен

 

#2 29.01.2013 05:43:09

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Помогите создать функцию

Попробуйте вот такой запрос (он один должен выводить то, что вам нужно)


-- "склеиваем" запрос из двух разных запросов:

SELECT
(
    -- в этой части запроса выводим самый первый id
    SELECT id
    FROM table
    ORDER BY id ASC
    LIMIT 1
)

UNION

(
    -- в этой части получаем три последних записи
    -- (здесь они отсортированы по убыванию -
    -- иначе их получить не выйдет)
    SELECT id
    FROM table
    ORDER BY id DESC
    LIMIT 3
)
   
ORDER BY 1 ASC
    -- отсортировали весь результат по первой колонке
    -- (это у нас id)
 

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson