powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / использовать LIMIT по группе
5 сообщений из 5, страница 1 из 1
использовать LIMIT по группе
    #38422579
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем привет

есть такой запрос =
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 
  `question`.`id_que`,
  `question`.`question`, 
  `question`.`position`,
  `answer`.`id_answ`,
  `answer`.`answer`,
  `answer`.`right`
FROM `question`
LEFT JOIN `answer` USING (`id_que`)
WHERE `question`.`id_theme` = 1


и его результат =


подскажите - как скорректировать запрос, чтобы он выдавал строго 2 вопроса со всеми ответами к ним =


использование LIMIT не катит - так как он формирует количество строк в результате запроса и заранее не известно - сколько будет ответов у вопроса: может2, а может и 6

ай вери нид ё хелп!
...
Рейтинг: 0 / 0
использовать LIMIT по группе
    #38422588
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нефиг быть столь уверенным в исключительности своей проблемы...

FAQ: Нумерация строк и другие вопросы про использование переменных
...
Рейтинг: 0 / 0
использовать LIMIT по группе
    #38422647
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нафига тут переменные и нумерация? ТСу ведь не нужен лимит в пределах группы, ему нужно просто получить 2 группы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT 
  `question`.`id_que`,
  `question`.`question`, 
  `question`.`position`,
  `answer`.`id_answ`,
  `answer`.`answer`,
  `answer`.`right`
FROM `question`
LEFT JOIN `answer` USING (`id_que`)
JOIN (select id_que 
 FROM question  
 WHERE `id_theme` = 1
 ORDER BY rand() LIMIT 2
) t0 USING (`id_que`)
WHERE `question`.`id_theme` = 1
...
Рейтинг: 0 / 0
использовать LIMIT по группе
    #38422677
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirнафига тут переменные и нумерация? ТСу ведь не нужен лимит в пределах группы, ему нужно просто получить 2 группы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT 
  `question`.`id_que`,
  `question`.`question`, 
  `question`.`position`,
  `answer`.`id_answ`,
  `answer`.`answer`,
  `answer`.`right`
FROM `question`
LEFT JOIN `answer` USING (`id_que`)
JOIN (select id_que 
 FROM question  
 WHERE `id_theme` = 1
 ORDER BY rand() LIMIT 2
) t0 USING (`id_que`)
WHERE `question`.`id_theme` = 1


спасибо! сработало! только пришлось слегка подкорректировать ордербай =
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT 
  `question`.`id_que`,
  `question`.`question`, 
  `answer`.`id_answ`,
  `answer`.`answer`,
  `answer`.`right`
FROM `question`
LEFT JOIN `answer` USING (`id_que`)
JOIN (select id_que 
 FROM question  
 WHERE `id_theme` = 1
 ORDER BY id_que LIMIT 2
) t0 USING (`id_que`)
WHERE `question`.`id_theme` = 1



у меня еще вопрос = а вот этой JOIN, который вы добавили после LEFT JOIN он чего с чем объединяет?
ведь именно он лимитирует количество используемых групп...
если можно - поясните хоть чуть-чуть
...
Рейтинг: 0 / 0
использовать LIMIT по группе
    #38422724
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
видимо, пошаговая логика запроса такая =


так как INNER JOIN возвращает пересечение двух таблиц


p.s. отсюда
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / использовать LIMIT по группе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]