Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.21.248.47] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
Есть запрос select * from articles limit 5 ORDER BY mdate DESC
это выдаст 5 последних записей. но если я хочу добыть себе 1000-ную запись? можно конечно получить все записи, а потом из них выбрать 1000-ную, но это ведь жутко неоптимально... |
Сообщ.
#2
,
|
|
|
Вводи дополнительное поле. Логика работы всех серверных баз данных исключает обращение к записи по номеру, тому много причин. Самый оптимальный вариант введение в таблицу дополнительного поля с номером записи, автоинкрементом, GUID или просто цифрой, и Select по этому полю.
|
Сообщ.
#3
,
|
|||
|
вариант Vit'а прокатит, но MySQL - это Наш СКУль! В нем все можно сделать по-нашему!
LIMIT offset, entries здесь offset - смещение (сколько записей пропустить; если не указать, то 0), а в entries - число записей, которые нужно вернуть. |
Сообщ.
#4
,
|
|
|
Этой _фишкой_ mySQL делает все ? (mSQL не всчет) остальные СУБД!
|
Сообщ.
#5
,
|
|
|
2Alpha
круто, спасибо. попробую |
Сообщ.
#6
,
|
|
|
2Sazabis: нет, конечно! Уж и пошутить-то нельзя, до того все серьезные.... Злые вы, уйду я от вас :`(
|
Сообщ.
#7
,
|
|
|
а где еще можно LIMIT проюзать ??
|
Сообщ.
#8
,
|
|
|
в смысле - где? вроде, кроме MySQL -нигде!
или для каких задач? чаще всего применяется для создания форумов/гостевых/новостных страничек, т.е. где есть разбиение на несколько страниц, а значит, нужна инфа ОТ и ДО |
Сообщ.
#9
,
|
|
|
ну так я и написал что mySQL делает всех
почему "нет конечно" ? я когда делал вэб интерфейс для MSSQL базы ( в первый раз ) долго понять не мог как мне выборку сразу за 2 страницу получить , пришлось курсор в холостую передвигать , хорошо что хотябы TOP х есть |
Сообщ.
#10
,
|
|||
|
Необходимость использования обращения к определённой строке является недоработкой программиста, идеология клиент-серверных приложений не предусматривает такой возможности. Архитектура базы данных должна быть такой чтобы этот вопрос никогда не возникал. Если он возникает, то это говорит не о недостатках баз данных (в большинстве своём действительно не имеющие такой возможности), а о неопытности программиста и недостаточно продуманной архитектуре базы. |
Сообщ.
#11
,
|
|
|
2Vit
есть таблица со звонками абонентов, у одного их может быть 10 у другого 10000, надо вывести на экран, обычную html-ю, с инфой: звонок - время - куда - ... . Разумеется поддерживаются всяческие ограничения, по времени например, но в любом случае на страницу может быть вывалено более N записей. где N критичное для сервера число, например по соображениям времени формирования запроса ( У браузера есть период, после которого он может выдать page not found ). Да взять какой нибудь раздел ТУТ, тоже переключатели по страницам. Если писать проги с использованием ADOQuery, к примеру, то на страницы, относительно, можно положить. Может на форуме каждая страница имеет свой id ? чтобы записи возвращались без ограничений на кол-во, и при каждом удалении id пересчитывается ?, и при изменении кол-ва отображаемых постов на странице, конкретным пользователем, пересчитываются id страниц для него? Как теория ответит на эти вопросы ? |
Сообщ.
#12
,
|
|
|
Записи нумеруются (т.е. в таблице есть автоинкремент), далее выбираются только номера по критерию - у тебя есть результат запроса в виде таблицы состоящей только из одного поля - номеров запроса, когда тебе надо выбрать реальные данные - ты выбираешь на основе этой таблицы...
|
Сообщ.
#13
,
|
|||
|
Непонял, 1 раз выбираю id ? куда то в темп, или во вложенный запрос ?, а затем уже ... что ? можно поподробней, действительно интересно, если это работает. |
Сообщ.
#14
,
|
|
|
Просто хранишь открытым результат запроса (к сожалению MySQL довольно чахлый сервер и создание View не поддерживает) поэтому остальные операции делаются в коде. В более развитых базах данных целесообразно сделать View из выбранных Id - тогда это View можно использовать в последующих кверях - во всяком случае это практически единственный нормальный выход для MS SQL Server? который не поддерживает обращение к произвольной записи.
|
Сообщ.
#15
,
|
|
|
Ну можно INTO #temp сделать, это в общем понятно. мне дальше не понятно получил я записи, единственное что я могу сказать про них что они идут по порядку id, и id не дублируются, но идут не подряд конечно.
скажем: <id> 2 5 7 8 14 23 34 35 37 40 55 Это вся выборка, мне надо получить 2 страницу - одна страница три записи. Как их достать ? на ум приходят только извраты |