Forum Webscript.Ru

Общие => Базы данных => Тема начата: Jean от 04 Ноября 2004, 08:12:24

Название: limit и перелистывание страниц
Отправлено: Jean от 04 Ноября 2004, 08:12:24
у меня есть две таблицы, предположим object, object_attribute.

object_attribute связана с object по полю objectid

и когда я хочу вывести информацию об объекте, то я join\'ом соединяю таблицы.
то есть результатом будет количество строк равное количеству атрибутов у объекта.

Что делать если я хочу вывести информацию о пяти, десяти объектах, как мне ограничить результат, ведь заранее я не знаю, сколько строк будет в результате (всегда разное количество атрибутов может быть)

Заранее спасибо
Название: limit и перелистывание страниц
Отправлено: commander от 04 Ноября 2004, 10:21:09
Limit ? Offset ?
Название: limit и перелистывание страниц
Отправлено: Jean от 04 Ноября 2004, 10:46:34
ну если я правильно понимаю, то limit, выводит заданное количество строк всего результата

то есть например у меня есть 5 объектов
у 4 из них по три атрибута, а у 5го - 6

всего строк должно получиться 18, поэтому я ведь не могу написать limit 5
Название: limit и перелистывание страниц
Отправлено: Forza от 04 Ноября 2004, 10:46:52
commander, Limit ему не подойдёт, т.к. он хочет ограничить не по количеству строк, а по количеству объектов.
На мой взгляд, тут может подойти вложенный селект (http://www.mysql.ru/docs/man/ANSI_diff_Sub-selects.html), поддерживаемый в 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 или проблемы с запросом.
Название: limit и перелистывание страниц
Отправлено: Jean от 04 Ноября 2004, 10:52:27
да у меня тоже 4.0.18, так что вложенный селект себе позволить не могу.

ладно, буду биться дальше
Название: limit и перелистывание страниц
Отправлено: Forza от 04 Ноября 2004, 10:57:11
Цитировать
Jean:
ладно, буду биться дальше

Зачем биться? Делай двумя запросами!