Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подзапрос в качестве LIMIT для запроса, как реализовать или чем заменить? / 4 сообщений из 4, страница 1 из 1
08.09.2020, 13:15
    #39996534
wlad1164
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подзапрос в качестве 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.
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
09.09.2020, 04:36
    #39996761
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подзапрос в качестве LIMIT для запроса, как реализовать или чем заменить?
wlad1164
Подскажите, как можно решить проблему?

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

Итак, зачем её решать и что вы хотите получить в итоге?
Ок, решите у вас будет 14 записей с начала в данном случае, какой в этом смысл?
...
Рейтинг: 0 / 0
09.09.2020, 07:30
    #39996766
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подзапрос в качестве LIMIT для запроса, как реализовать или чем заменить?
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
09.09.2020, 18:32
    #39997024
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подзапрос в качестве LIMIT для запроса, как реализовать или чем заменить?
с утра глаза залипли
select IF(ISNULL(id NOT IS NULL),
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подзапрос в качестве LIMIT для запроса, как реализовать или чем заменить? / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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