powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подзапрос в качестве LIMIT для запроса, как реализовать или чем заменить?
4 сообщений из 4, страница 1 из 1
Подзапрос в качестве LIMIT для запроса, как реализовать или чем заменить?
    #39996534
wlad1164
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, имеется запрос для получения данных
Сам запрос
Код: sql
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
SELECT
    *
FROM
    (
    SELECT
        sb.`usergroup_id`,
        sb.`sheettype_id`,
        sb.`id` AS 'sheetbook_id',
        n.`number`,
        s.`id`,
        s.`status`,
        s.`date`,
        s.`driver_id`,
        s.`car_id`
    FROM
        `sheetbook` sb
    LEFT JOIN `numbers10000` n ON
        n.`number` >= sb.`min` AND n.`number` <= sb.`max` AND n.`number` <=(
        SELECT
            MAX(`number`) + 1
        FROM
            `sheets`
        WHERE
            `sheetbook_id` = sb.`id`
    )
LEFT JOIN `sheets` s ON
    s.`number` = n.`number` AND s.`sheetbook_id` = sb.`id`
WHERE
    sb.`usergroup_id` = 1 AND sb.`sheettype_id` = 1
ORDER BY
    s.`status`,
    sb.`id`
DESC
    ,
    n.`number`
LIMIT 30
) rez
ORDER BY
    rez.`sheetbook_id`,
    rez.`number`;


Который возвращает примерно такой набор данных:
Пример возвращаемого результата

Как в качестве LIMIT для запроса установить значение количества значений NULL в столбце id +10 ?
т.е. для данного случая вместо LIMIT 30 должно быть LIMIT 14 (4+10)

Пытался сделать через временную таблицу но как понял в LIMIT вообще ничего нельзя подсовывать....
Попытки что то придумать
Код: sql
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
CREATE TEMPORARY TABLE FullTable SELECT
    sb.`usergroup_id`,
    sb.`sheettype_id`,
    sb.`id` AS 'sheetbook_id',
    n.`number`,
    s.`id`,
    s.`status`,
    s.`date`,
    s.`driver_id`,
    s.`car_id`
FROM
    `sheetbook` sb
LEFT JOIN `numbers10000` n ON
    n.`number` >= sb.`min` AND n.`number` <= sb.`max` AND n.`number` <=(
    SELECT
        MAX(`number`) + 1
    FROM
        `sheets`
    WHERE
        `sheetbook_id` = sb.`id`
)
LEFT JOIN `sheets` s ON
    s.`number` = n.`number` AND s.`sheetbook_id` = sb.`id`
WHERE
    sb.`usergroup_id` = 1 AND sb.`sheettype_id` = 1;
SELECT
    COUNT(*) + 10
FROM
    FullTable
WHERE
    `id` IS NULL;
SELECT
    *
FROM
    (
    SELECT
        *
    FROM
        FullTable ft
    WHERE
        1
    ORDER BY
        ft.`status`,
        ft.`id`
    DESC
        ,
        ft.`number`
    LIMIT 30
) rez
WHERE
    1
ORDER BY
    rez.`sheetbook_id`,
    rez.`number`;


Подскажите, как можно решить проблему?
...
Рейтинг: 0 / 0
Подзапрос в качестве LIMIT для запроса, как реализовать или чем заменить?
    #39996761
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wlad1164
Подскажите, как можно решить проблему?

Вам надо уделить какое-то время на познание восточной философии.

Итак, зачем её решать и что вы хотите получить в итоге?
Ок, решите у вас будет 14 записей с начала в данном случае, какой в этом смысл?
...
Рейтинг: 0 / 0
Подзапрос в качестве LIMIT для запроса, как реализовать или чем заменить?
    #39996766
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wlad1164,

упорядочить по id ISNULL + еще условие
в поле-счетчик (типа row_number) пронумеровать в таком порядке с условием id NOT NULL, там где id ISNULL - row_number=0

WHERE row_number<11

вкратце в переменных
Код: sql
1.
2.
3.
4.
select IF(ISNULL(id NOT IS NULL), @a:= @a + 1, 0) as row_namber
from (select @a:= 0) s, ...
where row_namber < 11
order by id IS NULL, ...
...
Рейтинг: 0 / 0
Подзапрос в качестве LIMIT для запроса, как реализовать или чем заменить?
    #39997024
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с утра глаза залипли
select IF(ISNULL(id NOT IS NULL),
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подзапрос в качестве LIMIT для запроса, как реализовать или чем заменить?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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