Продолжение соединения таблиц, но у меня есть перекрывающиеся имена столбцов. Как я называю имена этих столбцов?

Вот мой код для объединения двух таблиц:

DB.from(:sources).join(:payloads, :source_id => :id)

Имена таблиц :sources, :payloads.

Проблема в том, что в полезной нагрузке есть столбец :id, который перезаписывает столбец :id в :sources. Мне нужно использовать псевдоним, чтобы я просто получил мега-таблицу со всеми именами столбцов. Однако, как написано в настоящее время и по мере того, как мои таблицы в настоящее время структурированы, столбцы :id объединяются, а вторая таблица имеет приоритет. Это имеет смысл?

Как создать псевдоним, чтобы столбец :id из :sources все еще отображался?

Ответ 1

Чтобы добавить псевдоним sources.id к другому имени, используйте псевдонимы Идентификатор.

.select_append(:sources__id___source_id).join...
# *, `sources`.`id` AS 'source_id'

Ответ 2

Я думаю, что это случай, когда использование Sequel graph поможет вам.

Из документации:

Подобно #join_table, но использует однозначные псевдонимы для выбранных столбцов и сохраняет метаданные о псевдонимах для использования другими способами.

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

В разных файлах документации есть несколько примеров, которые бы дали очень длинный ответ, поэтому я рекомендую просматривать документы, искать их и видеть, как они работают для вас.

Кроме того, IRC-канал Sequel может быть большим преимуществом для подобных вопросов.