Agtustud Опубликовано 21 Мая 2008 Жалоба Поделиться Опубликовано 21 Мая 2008 Как сделать вывод 5 последних альбомов из назначенных категорий галлереи. Допустим категорий 5. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kvendi Опубликовано 21 Мая 2008 Жалоба Поделиться Опубликовано 21 Мая 2008 куда выводить- то ? описывайте подробно что и в каком виде и куда Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Agtustud Опубликовано 21 Мая 2008 Автор Жалоба Поделиться Опубликовано 21 Мая 2008 вывести в отдельно созданный файл допустим под названием albomi.phpприэтом в этот файл приедется функции инклудить. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kvendi Опубликовано 21 Мая 2008 Жалоба Поделиться Опубликовано 21 Мая 2008 Хм, ну это собственно вам и вернет то что требуетсяselect * from ibf_gallery_albums where (category_id=<id категории, или множество категорий>) order by last_pic_date desc limit 5 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Agtustud Опубликовано 22 Мая 2008 Автор Жалоба Поделиться Опубликовано 22 Мая 2008 спасибо =) limit не воспринимает. а так для одной директории работаетмножество категорий как записывается? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kvendi Опубликовано 22 Мая 2008 Жалоба Поделиться Опубликовано 22 Мая 2008 Что значит limit не воспринимает ?для множества пишите так:select * from ibf_gallery_albums where (category_id in (<id1>,<id2>,<id3>)) order by last_pic_date desc limit 5 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Agtustud Опубликовано 22 Мая 2008 Автор Жалоба Поделиться Опубликовано 22 Мая 2008 с несколькими категориями понял. а вот где взять лимит =(у мну мсскл LIMIT в mssql нет =( Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kvendi Опубликовано 22 Мая 2008 Жалоба Поделиться Опубликовано 22 Мая 2008 В MSSQL немного по другому вместо Limit используйтеконструкциюTOP 5 //вернет 5 строк результата запросаTOP XX PERCENT //возвращает кол-во строк равное XX проценту от общего кол-ва строк результата выполнения запроса Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Agtustud Опубликовано 22 Мая 2008 Автор Жалоба Поделиться Опубликовано 22 Мая 2008 select top 5 * from ibf_gallery_albums where (category_id in (21,22,23,24,25)) order by last_pic_dateпримерно вот так. только выводит первые 5 строчек а не 5 последних Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kvendi Опубликовано 22 Мая 2008 Жалоба Поделиться Опубликовано 22 Мая 2008 order by last_pic_date=>order by last_pic_date desc Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Agtustud Опубликовано 22 Мая 2008 Автор Жалоба Поделиться Опубликовано 22 Мая 2008 спасибо за краткий курс по базам =) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 22 Мая 2008 Жалоба Поделиться Опубликовано 22 Мая 2008 В IPB без лимитов туго Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 22 Мая 2008 Жалоба Поделиться Опубликовано 22 Мая 2008 Kvendi, напишите мне для общего развития, как тогда записывают "LIMIT 100, 10" в MSSQL? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 23 Мая 2008 Жалоба Поделиться Опубликовано 23 Мая 2008 Подзапросом.Но уж больно эти подзапросы + TOP дают нагрузку большую. (при использовании TOP СУБД создаёт временную таблицу) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kvendi Опубликовано 23 Мая 2008 Жалоба Поделиться Опубликовано 23 Мая 2008 Ну на самом деле общего решения нет, так как конкретно такая возмонжость в MSSQL отсутствует, на соклько мне известно (хотя я не спец в MSSQL), но общим решением для него будет:SELECT * FROM table LIMIT n,n1в MSSQL это будет примерно так:select top n1 * from (select top n+n1 * from tablex order by fieldy asc) order by fieldy desc Насчет нагрузки на сервер Song полностью прав, любое хитрое решение для замены Limit -а в MSSQL будет очень конкретно добавлять нагрузки Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 23 Мая 2008 Жалоба Поделиться Опубликовано 23 Мая 2008 Там есть достаточно много решений, но они не кросс-T-SQLные.Т.е. в одной СУБД пойдут, в другой - нет. Например есть там такая штука - ROWNUMBER() можно её сделать and rownumber() between 20 and 30 можно создать временную таблицу с identy первичным ключом, нагнетать туда данные, а потом выбрать по id between x and x + y Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kvendi Опубликовано 23 Мая 2008 Жалоба Поделиться Опубликовано 23 Мая 2008 Да, вариантов действительно много, но универсальным будет один :для выборки диапазона строк : выбираем кол-во строк, равное кол-ву максимума диапазона и далее в цикле отсеиваем первые n-ненужных Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 23 Мая 2008 Жалоба Поделиться Опубликовано 23 Мая 2008 На самом деле то что я предложил выше - временная таблица, это быстрее чем два запроса с TOP ("отсеивание лишних" на n-ой странице будет оч. тяжело даваться). Тем более что T-SQL создаёт временные таблицы на-лету, обычным селектом, не то что Oracle. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 23 Мая 2008 Жалоба Поделиться Опубликовано 23 Мая 2008 Спасибо, жесть Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.