создать пустые строки между двумя числами в MySQL - PullRequest
0 голосов
/ 12 апреля 2019

Я реализую проект на php, где у пользователя есть несколько книг, с номером серии, например, Книга № 1 - серии 151-175, это означает, что книга № 1 имеет 25 страниц, каждая страница имеет уникальный номер серии.из 151, 152 ... 175.

enter image description here

пользователь использует одну страницу определенной книги для создания ваучера определенного типа.иногда можно создать два ваучера для одной страницы, например, 151A и 151B.

enter image description here

, поэтому мне нужен SQL-запрос, который возвращает фиктивные строки от 1 до 175,и оставил соединения с таблицей ваучеров

просто так

enter image description here

1 Ответ

1 голос
/ 12 апреля 2019

Если ваша версия mysql поддерживает CTE, вы можете попытаться использовать CTE RECURSIVE для создания результирующего набора в виде таблицы Outer JOIN.

Или вы можете использовать WHILE с временной таблицей для создания результирующего набора для номеров серий.

Запрос № 1

WITH RECURSIVE CTE AS (
    SELECT start_series,end_series
    FROM books
    UNION ALL
    SELECT start_series + 1,end_series
    FROM CTE
    WHERE start_series < end_series
)
SELECT c.start_series,
       coalesce(CONCAT(c.start_series,v.post_fix),v.voucher_page_no) voucher_no
FROM CTE c LEFT JOIN voucher v 
on c.start_series = v.voucher_page_no
ORDER BY c.start_series;

| start_series | voucher_no |
| ------------ | ---------- |
| 151          | 151A       |
| 151          | 151B       |
| 152          | 152        |
| 153          | 153        |
| 154          |            |
| 155          | 155        |
| 156          |            |
| 157          |            |
| 158          |            |
| 159          |            |
| 160          |            |
| 161          |            |
| 162          |            |
| 163          |            |
| 164          |            |
| 165          |            |
| 166          |            |
| 167          |            |
| 168          |            |
| 169          |            |
| 170          |            |
| 171          |            |
| 172          |            |
| 173          |            |
| 174          |            |
| 175          |            |

Просмотр на БД Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...