Получить записи с вложенными элементами node-mysql - PullRequest
0 голосов
/ 07 июня 2018

Я использую node-mysql для управления запросами к базе данных в моем приложении expressjs, и я хочу получить вложенные результаты из запроса.Но, кажется, я не могу найти способ сделать это простым способом.

В их документе я нашел Объединения с перекрывающимися именами столбцов , которыеможно запросить имя таблицы и вложенные столбцы.Однако это не подходит для обхода структуры «один ко многим» или «многие ко многим».

Ниже приведены примеры структуры таблицы и ожидаемых результатов.

Таблицы

tbl_order

id    customer_name    date
1     Perona           6/7/2018
2     Zorro            6/8/2018

tbl_order_items

id    order_id   item_name
1     2          compass
2     2          sword
3     2          yakuta
4     1          umbrella
5     1          doll

Ожидаемые результаты

Я хочу получить все заказы иэлементы, содержащие заказ.

[
    {
       id: 1,
       customer_name: perona,
       data: 6/7/2018,
       items: [
          { id: 4, item_name: umbrella },
          { id: 5, item_name: doll },
       ]
    },
    {
       id: 2,
       customer_name: zorro,
       data: 6/8/2018,
       items: [
          { id: 1, item_name: compass },
          { id: 2, item_name: sword },
          { id: 3, item_name: yakuta },
       ]
    }
]

Можно ли сделать то же самое в node-mysql?

1 Ответ

0 голосов
/ 07 июня 2018

Вы можете использовать INNER JOIN для получения вложенных данных, основанных на вашей ассоциации.

SELECT [order].*,
       [items].[id] AS [items.id]
       [items].[item_name] AS [items.item_name]
FROM
(
    SELECT [id],
           [customer_name],
           [date]
    FROM [tbl_order]
) AS [order]
INNER JOIN
[tbl_order_items] AS [items]
ON
[order].[id] = [items].[order_id];
...