MySQL - как выбрать все данные с 1 условием и дополнить, если необходимо, другим условием? - PullRequest
0 голосов
/ 07 мая 2018

У меня есть БД со столбцом STATUS и 3 условиями:

-1 = ВОССТАНОВЛЕНО
0 = НЕЙТРО
1 = УТВЕРЖДЕНО

Мне нужно разделить все регистры на 2 набора:

SET 1 (MAIN) - это таблица «MAIN», имеющая ограничение в 5 регистров. Но ВСЕ УТВЕРЖДЕНО должно быть в этой таблице - даже если у нас их больше 5 - и здесь не может быть НИКАКОГО РЕГИСТРАЦИОННОГО регистра.

например:
- Если у нас есть 10 УТВЕРЖДЕНО - в главной таблице будет 10 ВСЕХ УТВЕРЖДЕНО.
- Если у нас есть 2 УТВЕРЖДЕНО - основная таблица будет иметь 2 ВСЕХ УТВЕРЖДЕНО + 3 НЕЙТРОСА. (5 ВСЕГО) - Но если у меня есть только 1 Нейтрос и 10 REPPROVED, например, в таблице будет только 2 ALL APPROVED + 1 NEUTROS. (3 регистра).

SET 2 - будет ВСЕ ОБНОВЛЕНО + остальная часть НЕЙТРОСА - без ограничения регистров.

Ситуация 1: БОЛЬШЕ СОСТОЯНИЯ 1, ЧЕМ ПРЕДЕЛ РЕГИСТРА (5)

ID - NAME - STATUS
1 - John  -  1
2 - Mary  -  1
3 - Mike  -  1
4 - James -  1
5 - Helen -  1
6 - Fred  -  1
7 - Nick  -  1
8 - Gio   -  0
9 - Rick  -  0
10 - May  - -1

SET 1 будет: (ВСЕ СТАТУС 1)

ID - NAME - STATUS
1 - John  -  1
2 - Mary  -  1
3 - Mike  -  1
4 - James -  1
5 - Helen -  1
6 - Fred  -  1
7 - Nick  -  1

SET 2 будет:

8 - Gio   -  0
9 - Rick  -  0
10 - May  - -1

ситуация 2: (ЗАПОЛНИТЬ СТОЛ СОСТОЯНИЕМ 0)

ID - NAME - STATUS
1 - John  -  1
2 - Mary  -  1
3 - Mike  -  1
4 - James -  0
5 - Helen -  0
6 - Fred  -  0
7 - Nick  -  0
8 - Gio   -  0
9 - Rick  -  0
10 - May  - -1

SET 1 будет: (ВСЕ СТАТУС 1 + 2 СО СТАТУСОМ 0)

ID - NAME - STATUS
1 - John  -  1
2 - Mary  -  1
3 - Mike  -  1
4 - James -  0
5 - Helen -  0

SET 2 будет:

6 - Fred  -  0
7 - Nick  -  0
8 - Gio   -  0
9 - Rick  -  0
10 - May  - -1

и затем - ситуация 3: (ВСЕ СОСТОЯНИЕ 1 + СОСТОЯНИЕ 0 Меньше, чем предел регистра - 5)

ID - NAME - STATUS
1 - John  -  1
2 - Mary  -  1
3 - Mike  -  1
4 - James -  0
5 - Helen - -1
6 - Fred  - -1
7 - Nick  - -1
8 - Gio   - -1
9 - Rick  - -1
10 - May  - -1

SET 1 будет: (ВСЕ СТАТУС 1 + 1 СО СТАТУСОМ 0 - только 4 регистра)

ID - NAME - STATUS
1 - John  -  1
2 - Mary  -  1
3 - Mike  -  1
4 - James -  0

SET 2 будет:

5 - Helen - -1
6 - Fred  - -1
7 - Nick  - -1
8 - Gio   - -1
9 - Rick  - -1
10 - May  - -1

есть идеи?

1 Ответ

0 голосов
/ 07 мая 2018

Нормальным подходом будет сбор строк для отображения с использованием SQL-запроса. Это обеспечит выбор (предложение WHERE) и сортировку (предложение ORDER BY). однажды у вас есть строки, используйте ASP для визуализации HTML при необходимости.

Я оставлю вам ASP-classic.

Первые 5 со статусом = 1

SELECT 
    `id`,
    `name`,
    `status`
FROM `table`
WHERE `status` = 1
ORDER BY `status` DESC,`name` ASC
LIMIT 5;

Все со статусом 1 или 0

SELECT 
    `id`,
    `name`,
    `status`
FROM `table`
WHERE `status` IN (0,1)
ORDER BY `status` DESC,`name` ASC;

Все со статусом -1

SELECT 
    `id`,
    `name`,
    `status`
FROM `table`
WHERE `status` = -1
ORDER BY `status` DESC,`name` ASC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...