Сравните две таблицы с отсортированными и сгруппированными строками с MySQL / MariaDB - PullRequest
0 голосов
/ 03 августа 2020

Я хотел бы сравнить две таблицы, одну с текущим порядком, а другую с историей всех заказов.

Моя цель - определить, существует ли текущий заказ в истории. Для этого мне нужно проверить, есть ли у них одинаковые item в том же sequence порядке (не заботясь о точном количестве, только порядок) для любой порядок number (который группирует заказы в блоки). В этом примере current_order существует в history_order.order number 2:

current_order
+----------+------+
| sequence | item |
+----------+------+
|        1 |   11 |
|        2 |   12 |
|        3 |   13 |
+----------+------+

history_orders
+--------+----------+------+
| number | sequence | item |
+--------+----------+------+
|      1 |        1 |   11 | <- matches item 11
|      1 |        2 |   12 | <- matches item 12
|      1 |        3 |   14 | <- does not match 13, order 1 does not match
+--------+----------+------+
|      2 |        4 |   11 | <- matches item 11
|      2 |        5 |   12 | <- matches item 12
|      2 |        6 |   13 | <- matches item 13, order 2 matches
+--------+----------+------+

Я считаю, что мне нужно создать два подзапроса, чтобы получить упорядоченный items, а затем сравнить их, но как разобраться с заказом number? Его нужно сравнивать по блокам. Стоит ли l oop как-то через все number?

(SELECT item FROM current_order ORDER BY sequence)
INNER JOIN
(SELECT item FROM history_orders ORDER BY sequence GROUP BY number)
...

Заранее спасибо!

1 Ответ

0 голосов
/ 03 августа 2020

определить, существует ли уже текущий ордер в истории.

Обычно это может быть, например,

SELECT EXISTS ( SELECT NULL
                FROM ( SELECT GROUP_CONCAT(item ORDER BY item) items
                       FROM current_order ) co
                JOIN ( SELECT GROUP_CONCAT(item ORDER BY item) items
                       FROM history_orders
                       GROUP BY number ) ho USING (items) 
              ) AS order_with_this_items_list_exists
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...