Общие > Базы данных
limit и перелистывание страниц
Jean:
у меня есть две таблицы, предположим object, object_attribute.
object_attribute связана с object по полю objectid
и когда я хочу вывести информацию об объекте, то я join\'ом соединяю таблицы.
то есть результатом будет количество строк равное количеству атрибутов у объекта.
Что делать если я хочу вывести информацию о пяти, десяти объектах, как мне ограничить результат, ведь заранее я не знаю, сколько строк будет в результате (всегда разное количество атрибутов может быть)
Заранее спасибо
commander:
Limit ? Offset ?
Jean:
ну если я правильно понимаю, то limit, выводит заданное количество строк всего результата
то есть например у меня есть 5 объектов
у 4 из них по три атрибута, а у 5го - 6
всего строк должно получиться 18, поэтому я ведь не могу написать limit 5
Forza:
commander, Limit ему не подойдёт, т.к. он хочет ограничить не по количеству строк, а по количеству объектов.
На мой взгляд, тут может подойти вложенный селект, поддерживаемый в MySQL начиная с версии 4.1. У меня установлен 4.0.12, поэтому у себя синтаксис проверить не могу, но это должно быть что-то типа такого:
SELECT * FROM object JOIN object_attribute ON object.objectid = object_attribute.objectid WHERE object.objectid IN (SELECT DISTINCT objectid FROM object LIMIT 10);
Или можно скриптом этот запрос разбить на два: сначала получить список уникальных айди, а потом их просто поставить в IN(), если старая версия MySQL или проблемы с запросом.
Jean:
да у меня тоже 4.0.18, так что вложенный селект себе позволить не могу.
ладно, буду биться дальше
Навигация
Перейти к полной версии