powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос (SELECT в качестве LIMIT'a для другого SELECT'a)
4 сообщений из 4, страница 1 из 1
Помогите составить запрос (SELECT в качестве LIMIT'a для другого SELECT'a)
    #39783798
wlad1164
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер!
Подскажи, как в качестве значения LIMIT использовать значение полученное из SELECT ?

Сейчас имею два запроса:
Код: sql
1.
2.
3.
SELECT 22-COUNT(`Numbers`.`Number`) FROM `Numbers` LEFT JOIN `Listy` ON `Numbers`.`Number`=`Listy`.`Nomer` WHERE `Listy`.`Nomer` IS NULL and `Numbers`.`Number`< (select max(`Nomer`) from `Listy` where `Type`='PL' and `Book`=2);

SELECT Book As Book,`Numbers`.`Number` As Nomer,Voditel As Voditel,Data As Data FROM `Numbers` LEFT JOIN `Listy` ON `Numbers`.`Number`=`Listy`.`Nomer` WHERE `Listy`.`Nomer` IS NULL and `Numbers`.`Number`< (select max(`Nomer`) from `Listy` where `Type`='PL' and `Book`=2) UNION (SELECT `Book`,`Nomer`,`Data`,`Voditel` From `Listy` where `Type`='PL' and `Book`=2 order by `Nomer` DESC limit 22) order by `Nomer`;



Составлены из клочков того что нашел в интернете, но в принципе нужный результат почти получил...
Нужно чтобы значение полученное из первого SELECT использовалось в качестве LIMIT для второго.
т.е. сейчас первый SELECT возвращает значение 21, вот его нужно внедрить во второй SELECT вместо 22.


Общая информация:
Имеется 2 таблицы:
1.Numbers (1 столбец Number со значениями 1-10000)
2.Listy там много данных но для выборки интересует столбец Nomer

Нужно получить:
1. Все номера которых нет в `Listy`.`Nomer` и которые меньше чем максимальное значение `Listy`.`Nomer`
2. Плюс к ним добавить необходимое количество номеров из `Listy`.`Nomer` начиная с максимального для того чтобы общее количество было равно 22.
*в случае если по первому пункту получается >=22 значения, необходимо вывести 22 из них с наименьшим номером.

Запросы которые в начале поста это все смог найти и применить из google.
...
Рейтинг: 0 / 0
Помогите составить запрос (SELECT в качестве LIMIT'a для другого SELECT'a)
    #39783800
wlad1164
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще немного размышлений... дошел до такого запроса
Код: sql
1.
2.
3.
4.
SELECT * FROM ((SELECT Book As Book,`Numbers`.`Number` As Nomer,Voditel As Voditel,Data As Data FROM `Numbers` LEFT JOIN `Listy` ON `Numbers`.`Number`=`Listy`.`Nomer` WHERE `Listy`.`Nomer` IS NULL and `Numbers`.`Number`< (select max(`Nomer`) from `Listy` where `Type`='PL' and `Book`=2))
UNION 
(SELECT `Book`,`Nomer`,`Data`,`Voditel` From `Listy` where `Type`='PL' and `Book`=2 order by `Nomer` DESC limit 22) 
LIMIT 22) AS Number2 ORDER BY `Nomer`



Вроде как выдает нужный результат (условие под * не проверял)
Но как то все громоздко получилось... думаю есть способ все это упростить))
...
Рейтинг: 0 / 0
Помогите составить запрос (SELECT в качестве LIMIT'a для другого SELECT'a)
    #39783802
wlad1164
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
условие под * выполняется....
Буду рад замечаниям/советам где я слишком много костылей нагородил....
...
Рейтинг: 0 / 0
Помогите составить запрос (SELECT в качестве LIMIT'a для другого SELECT'a)
    #39783850
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wlad1164Подскажи, как в качестве значения LIMIT использовать значение полученное из SELECT ?Именно через LIMIT нельзя, там допустим только литерал, но не выражение.
Можно разными путями:
1) Как у вас - добивкой через UNION ALL до нужного количества записей.
2) С помощью переменных - завести поле-переменную-счетчик и фильтровать по ней.
3) С помощью prepared statement - они позволяют подставить свое значение в LIMIT.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос (SELECT в качестве LIMIT'a для другого SELECT'a)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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