Как вложить набор данных ha sh при объединении таблиц - PullRequest
2 голосов
/ 05 мая 2020

У меня есть запрос left outer join, и я хотел бы вложить результат, когда выполняю запрос из метода .all. На данный момент я могу вернуть результат только в виде плоского ha sh, но мне нужен вложенный ha sh, чтобы имя таблицы соединения было следующим уровнем в ha sh. Возможно ли это даже в Sequel?

У меня есть таблицы product и meta, а команда Sequel выполняется через график, поэтому столбцы имеют псевдонимы и выглядят следующим образом:

db[:product].graph(:meta, {product_id: : product_id}, {join_type: :left_outer}).all

Что раздражает в команде graph, так это то, что она будет использовать псевдонимы столбцов только в том случае, если она соответствует основной таблице. Есть ли способ убедиться, что он изменяет все столбцы, поскольку вы увидите, что столбец quantity не имеет префикса meta_?

Если это возможно, я полагаю, что я мог бы изменить ha sh вручную, переместив key => values в отдельный ha sh, который вложен путем сопоставления префикса (meta_) ключей.

Это то, что в настоящее время возвращается, но я бы хотел вместо этого вложенный ha sh:

В настоящее время:

{
  id: 1,
  name: 'Shave',
  product_id: 123,
  meta_id: 1,
  meta_product_id: 123,
  quantity: 2
}

Что я хотел бы видеть:

{
  id: 1,
  name: 'Shave',
  product_id: 123,
  meta: {
    id: 1,
    product_id: 123,
    quantity: 2
  }
}
...