Форум русской поддержки Joomla!® CMS
08.12.2016, 08:02:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Sql запрос JOIN и LIMIT

 (Прочитано 234 раз)
0 Пользователей и 1 Гость смотрят эту тему.
platonische
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 297


Парусные экспедиции vk.com/tc670


« : 05.04.2016, 18:20:38 »

Подскажите. а то сам никак не додумаюсь...
надо вот в этом запросе ограничить кол-во одинаковых r.title ограничить пятью. Можно ли это сделать?
Поясню: надо чтоб по связям мы получили лишь по 5 экземпляров не больше. Это не LIMIT 0,5
Код
SELECT t.`title`, r.`title`
FROM `nr5p8_turism_tour` AS `t`
LEFT JOIN `nr5p8_turism_route` AS `r` ON r.`id`=t.`route_id`
ORDER BY r.`id`
 
 
Записан
almika
Осваиваюсь на форуме
***

Репутация: +11/-0
Offline Offline

Пол: Женский
Сообщений: 188



« Ответ #1 : 05.04.2016, 18:58:17 »

Как-то так попробуйте:
Код:
SELECT t.`title`,
(SELECT r.`title` FROM `nr5p8_turism_route` AS `r` WHERE t.`title`=r.`title` LIMIT 5 ORDER BY r.`id`) AS r_title
FROM `nr5p8_turism_tour` AS `t`

Если не получится, завтра уточню.
Записан
platonische
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 297


Парусные экспедиции vk.com/tc670


« Ответ #2 : 05.04.2016, 19:17:50 »

Ход мысли понял - буду разбирать.
Записан
platonische
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 297


Парусные экспедиции vk.com/tc670


« Ответ #3 : 05.04.2016, 19:29:09 »

Не помоему не катит
Записан
almika
Осваиваюсь на форуме
***

Репутация: +11/-0
Offline Offline

Пол: Женский
Сообщений: 188



« Ответ #4 : 06.04.2016, 08:47:58 »

Вот такой запрос работает у меня для категорий и материалов, выбирает первые 3 материала (по id) для каждой категории.

Код:
Select ta.alias, ta.id
    , tb.alias
From prefix_categories As ta
    Left Join   (
                Select tx1.catid, tx1.alias, tx1.id
                    , (Select Count(*)
                        From prefix_content As tx2
                        Where tx2.catid = tx1.catid
                            And tx2.id < tx1.id) As rank
                From prefix_content As tx1
                ) as tb
        On tb.catid = ta.id
            And tb.rank <= 2
WHERE
  ta.parent_id > 0
  AND ta.extension = 'com_content'

Если надо последние, то добавьте order desc для id. Подставьте свои таблицы и поля.

Не уверена, что быстро будет выбирать для больших таблиц, может в цикле будет проще.

Удачи
Записан
platonische
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 297


Парусные экспедиции vk.com/tc670


« Ответ #5 : 06.04.2016, 12:54:47 »

Спасибо! Сейчас реализовал через цикл. Ваш вариант проверю - интересно разобраться как такое делается - СПАСИБО!
И хочу уточнить: а что обработка на php цикла большой таблицы хоть в каких-то случаях бывает быстрее подобных выборок?
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #6 : 06.04.2016, 15:31:09 »

Не бывает. И подзапросы в большинстве случаев медленнее джоинов.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet