Автор Тема: limit и перелистывание страниц  (Прочитано 3640 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Jean

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 113
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
limit и перелистывание страниц
« : 04 Ноября 2004, 08:12:24 »
у меня есть две таблицы, предположим object, object_attribute.

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

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

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

Заранее спасибо

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
limit и перелистывание страниц
« Ответ #1 : 04 Ноября 2004, 10:21:09 »
Limit ? Offset ?
And no religion too...

Оффлайн Jean

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 113
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
limit и перелистывание страниц
« Ответ #2 : 04 Ноября 2004, 10:46:34 »
ну если я правильно понимаю, то limit, выводит заданное количество строк всего результата

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

всего строк должно получиться 18, поэтому я ведь не могу написать limit 5

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
limit и перелистывание страниц
« Ответ #3 : 04 Ноября 2004, 10:46:52 »
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

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 113
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
limit и перелистывание страниц
« Ответ #4 : 04 Ноября 2004, 10:52:27 »
да у меня тоже 4.0.18, так что вложенный селект себе позволить не могу.

ладно, буду биться дальше

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
limit и перелистывание страниц
« Ответ #5 : 04 Ноября 2004, 10:57:11 »
Цитировать
Jean:
ладно, буду биться дальше

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28