Index · Правила · Поиск· Группы · Регистрация · Личные сообщения· Вход

Список разделов Веб-строительство и интернет-проекты
 
 
 

Раздел: Веб-строительство и интернет-проекты sql запрос 

Создана: 09 Февраля 2007 Птн 21:31:27.
Раздел: "Веб-строительство и интернет-проекты"
Сообщений в теме: 17, просмотров: 13971

На страницу: Назад  1, 2  Вперёд
  1. A1an


    Частый гость


    Более 7 лет на форумеМуж.
    09 Февраля 2007 Птн 21:31:27
    Есть вопрос, как вывести из таблицы например поля name 5 последние записи отдельно, то есть отдельно последнюю, предпоследнюю и так до 5
  2. 09 Февраля 2007 Птн 22:07:25
    A1an писал :Есть вопрос, как вывести из таблицы например поля name 5 последние записи отдельно, то есть отдельно последнюю, предпоследнюю и так до 5


    указываешь DESC - что сортировка ведётся в обратном порядке и ставишь LIMIT 5

    например
    SELECT * FROM users ORDER BY name DESC LIMIT 5
  3. A1an


    Частый гость


    Более 7 лет на форумеМуж.
    10 Февраля 2007 Суб 18:54:06
    AlexAdmin писал :
    указываешь DESC - что сортировка ведётся в обратном порядке и ставишь LIMIT 5
    например
    SELECT * FROM users ORDER BY name DESC LIMIT 5

    Ну вообщем понятно, но сыровно не то, я хотел что бы можно было вывести отдельно предпоследнюю запись и пред пред последнюю а не все вместе и сразу
  4. Heimdal


    Участник


    Более 7 лет на форумеМуж.
    10 Февраля 2007 Суб 19:15:08
    A1an писал :Есть вопрос, как вывести из таблицы например поля name 5 последние записи отдельно, то есть отдельно последнюю, предпоследнюю и так до 5

    Велик и могуч русский язык))
    Я далеко не уверен, что правильно понял, но все же:

    $limit = 1;
    for( $start = 1; $start < 5; $start++ ) {

    $qr[ $start ] = mysql_query("select * from user ORDER BY name DESC LIMIT $start, $limit ");

    }

    P.S. Вопрос админу(-ам). Может имеет смысл сделать подсветку кода?
  5. A1an


    Частый гость


    Более 7 лет на форумеМуж.
    10 Февраля 2007 Суб 20:28:45
    Heimdal писал :Велик и могуч русский язык))
    Я далеко не уверен, что правильно понял, но все же:
    $limit = 1;
    for( $start = 1; $start < 5; $start++ ) {

    $qr[ $start ] = mysql_query("select * from user ORDER BY name DESC LIMIT $start, $limit ");
    }
    P.S. Вопрос админу(-ам). Может имеет смысл сделать подсветку кода?

    Все же ты чуток не понял, мне нужен запрос, только запрос =) Уже все варианты испробовал с
    Код:
    "select * from user ORDER BY name DESC LIMIT  $start, $limit "
    вместо $start и $limit подставлял (1,2 и 2,1), но результата так и не добился, а это вывод хотя бы уже предпоследней строки.
    Heimdal писал :
    P.S. Вопрос админу(-ам). Может имеет смысл сделать подсветку кода?

    А чем тебе кнопочка "Code" не нравиться (в меню сверху в поле где текст пишешь), смотри выше не плохая подсветка=)
  6. Heimdal


    Участник


    Более 7 лет на форумеМуж.
    10 Февраля 2007 Суб 21:52:42
    A1an писал :
    Все же ты чуток не понял, мне нужен запрос, только запрос =) Уже все варианты испробовал с
    Код:
    "select * from user ORDER BY name DESC LIMIT  $start, $limit "
    вместо $start и $limit подставлял (1,2 и 2,1), но результата так и не добился, а это вывод хотя бы уже предпоследней строки.


    Т.е. ты хочешь только через sql получить эти 5 записей? Мне на ум приходят только 5 отдельных запросов:
    "select * from user ORDER BY name DESC LIMIT 1, 1"
    "select * from user ORDER BY name DESC LIMIT 2, 1"
    "select * from user ORDER BY name DESC LIMIT 3, 1"
    "select * from user ORDER BY name DESC LIMIT 4, 1"
    "select * from user ORDER BY name DESC LIMIT 5, 1"
    Если я тебя не так понял, напиши чуть подробнее, что за задача.

    A1an писал :
    А чем тебе кнопочка "Code" не нравиться (в меню сверху в поле где текст пишешь), смотри выше не плохая подсветка=)

    Да разве это подсветка? Хотелось, чтобы выделялся синтаксис языка )
  7. A1an


    Частый гость


    Более 7 лет на форумеМуж.
    11 Февраля 2007 Вск 12:41:08
    Heimdal писал :
    Т.е. ты хочешь только через sql получить эти 5 записей? Мне на ум приходят только 5 отдельных запросов:
    "select * from user ORDER BY name DESC LIMIT 1, 1"
    "select * from user ORDER BY name DESC LIMIT 2, 1"
    "select * from user ORDER BY name DESC LIMIT 3, 1"
    "select * from user ORDER BY name DESC LIMIT 4, 1"
    "select * from user ORDER BY name DESC LIMIT 5, 1"
    Если я тебя не так понял, напиши чуть подробнее, что за задача.

    Эх эти запросы=), чето ваще их не поиму, выводят что то не то, не могу понять даже че за му*ня такая, получается. Х*романтия какая то получается =(
    Heimdal, без обид, но твои запросы выводят всякую бяку не понятно а именно, в таблице 6 записец. Результаты вывода твоих запросов:
    "select * from user ORDER BY name DESC LIMIT 1, 1" - выводит 5-ую запись, а это предпоследняя, уже гуд =)
    "select * from user ORDER BY name DESC LIMIT 2, 1" - выводит 2-ую запись
    "select * from user ORDER BY name DESC LIMIT 3, 1" - выводит 3-ую запись
    "select * from user ORDER BY name DESC LIMIT 4, 1" - а тут ваще критизм, думал выведит 4 запись, а нет вывел 1-ую =)
    "select * from user ORDER BY name DESC LIMIT 5, 1" - и последнее, выводит 6 запись, а это последняя
    Вообщем итог результат не тот. Вчера вечером посидел почитал книжку "SQL" и пришла в голову одна ИНДЕЙКа так сказать =) и результат который я сегодня проверил меня порадовал, вообщем я добился того чего хотел. запросы являются таковыми:
    "select * from user WHERE id = (select max(id) from user)" - выводит последнюю запись тоесть 6
    "select * from user WHERE id = (select max(id)-1 from user)" - выводит 5-ую запись
    s"elect * from user WHERE id = (select max(id)-2 from user)" - выводит 4-ую запись
    "select * from user WHERE id = (select max(id)-3 from user)" - выводит 3-ую запись
    "select * from user WHERE id = (select max(id)-4 from user)" - выводит 2-ую запись
    То есть подробно, есть функция MAX - преднозначена для вывода максимального значения столбца. Вообщем гуд!!! =) Спосибо "Heimdal"!!!
  8. lorien


    Завсегдатай


    Более 10 лет на форумеМуж.
    11 Февраля 2007 Вск 13:23:59
    ORDER BY id DESC надо было а не по name
    А вообще сортировать по id - дурной тон, лучше завести отдельную колонку, куда писать время добавления
  9. Heimdal


    Участник


    Более 7 лет на форумеМуж.
    11 Февраля 2007 Вск 18:09:27
    A1an, Мои запросы давали вывод вразнобой т.к. сортировка происходила по name( т.е. если это текст, то по алфавиту ). Чтобы все выводилось по порядку нужно было сортировать по id - этого вначале я не учел ))) Ну, и мой небольшой косяк - начинать нужно всегда с 0, а не с 1, как я писал. Так, что я бы рекомендовал делать так, а не использовать max - старайся избегать вложенных запросов.

    lorien писал :ORDER BY id DESC надо было а не по name
    А вообще сортировать по id - дурной тон, лучше завести отдельную колонку, куда писать время добавления

    Почему? Я всегда считал, что id он на то и id, чтобы по нему искать/сортировать...
  10. A1an


    Частый гость


    Более 7 лет на форумеМуж.
    12 Февраля 2007 Пон 11:26:21
    Да, гуд!!! С id работает тоже, так что будет использовать твои запрос, ибо он короче =) Спасибо!!!
  11. lorien


    Завсегдатай


    Более 10 лет на форумеМуж.
    13 Февраля 2007 Втр 2:34:34
    Цитата :Почему? Я всегда считал, что id он на то и id, чтобы по нему искать/сортировать

    id - это PRIMARY KEY не надо по нему ничего сортировать, он служит для уникальной идентификации каждой записи. Конечно, никто не запретит сделать по нему сортировку, но это криво. Если надо сортировать по времени создания, то заводите колонку для времени и сортируйте по ней.
  12. Bodya


    Завсегдатай


    Более 10 лет на форумеМуж.
    13 Февраля 2007 Втр 10:32:20
    lorien верно говорит!

    PS. А чего за диалект sql использует LIMIT?
    rownum знаю, top знаю, limit ... незнаю Very Happy
  13. lorien


    Завсегдатай


    Более 10 лет на форумеМуж.
    13 Февраля 2007 Втр 11:22:43
    Дык мускуль
  14. Heimdal


    Участник


    Более 7 лет на форумеМуж.
    13 Февраля 2007 Втр 15:35:38
    lorien, так и не понял, почему по id нельзя сортировать. Могут быть сбои в работе или медленней все станет? Или плохой тон программирования?
  15. lorien


    Завсегдатай


    Более 10 лет на форумеМуж.
    13 Февраля 2007 Втр 19:17:58
    Потому что в одной колонке смешивается информация о двух сущностях:
    - уникальный идентификатор записи
    - время создания записи
    Этого делать не следует.
На страницу: Назад  1, 2  Вперёд