sql запрос
Создана: 09 Февраля 2007 Птн 21:31:27.
Раздел: "Веб-строительство и интернет-проекты"
Сообщений в теме: 17, просмотров: 14862
-
-
A1an писал :Есть вопрос, как вывести из таблицы например поля name 5 последние записи отдельно, то есть отдельно последнюю, предпоследнюю и так до 5
указываешь DESC - что сортировка ведётся в обратном порядке и ставишь LIMIT 5
например
SELECT * FROM users ORDER BY name DESC LIMIT 5 -
AlexAdmin писал :
указываешь DESC - что сортировка ведётся в обратном порядке и ставишь LIMIT 5
например
SELECT * FROM users ORDER BY name DESC LIMIT 5
Ну вообщем понятно, но сыровно не то, я хотел что бы можно было вывести отдельно предпоследнюю запись и пред пред последнюю а не все вместе и сразу -
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. Вопрос админу(-ам). Может имеет смысл сделать подсветку кода? -
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. Вопрос админу(-ам). Может имеет смысл сделать подсветку кода?
Все же ты чуток не понял, мне нужен запрос, только запрос =) Уже все варианты испробовал с
вместо $start и $limit подставлял (1,2 и 2,1), но результата так и не добился, а это вывод хотя бы уже предпоследней строки.Код: "select * from user ORDER BY name DESC LIMIT $start, $limit "
А чем тебе кнопочка "Code" не нравиться (в меню сверху в поле где текст пишешь), смотри выше не плохая подсветка=) -
A1an писал :
Все же ты чуток не понял, мне нужен запрос, только запрос =) Уже все варианты испробовал с
вместо $start и $limit подставлял (1,2 и 2,1), но результата так и не добился, а это вывод хотя бы уже предпоследней строки.Код: "select * from user ORDER BY name DESC LIMIT $start, $limit "
Т.е. ты хочешь только через 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" не нравиться (в меню сверху в поле где текст пишешь), смотри выше не плохая подсветка=)
Да разве это подсветка? Хотелось, чтобы выделялся синтаксис языка ) -
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"!!! -
-
A1an, Мои запросы давали вывод вразнобой т.к. сортировка происходила по name( т.е. если это текст, то по алфавиту ). Чтобы все выводилось по порядку нужно было сортировать по id - этого вначале я не учел ))) Ну, и мой небольшой косяк - начинать нужно всегда с 0, а не с 1, как я писал. Так, что я бы рекомендовал делать так, а не использовать max - старайся избегать вложенных запросов.
lorien писал :ORDER BY id DESC надо было а не по name
А вообще сортировать по id - дурной тон, лучше завести отдельную колонку, куда писать время добавления
Почему? Я всегда считал, что id он на то и id, чтобы по нему искать/сортировать... -
-
id - это PRIMARY KEY не надо по нему ничего сортировать, он служит для уникальной идентификации каждой записи. Конечно, никто не запретит сделать по нему сортировку, но это криво. Если надо сортировать по времени создания, то заводите колонку для времени и сортируйте по ней. -
-
-
-