Вопрос по postgresql, sql – Соединение SQL с использованием таблицы соединений с рельсов

0

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

Table1
--id
--data

Table2
--id
--data

Table1_Table2
--table1_id
--table2_id

Как я могу сделать соединение для этих данных, используя таблицу соединений?

Ваш Ответ

2   ответа
2

Упоминание всех таблиц вFROM Предложение также является объединением, неявным. Не рекомендуется использовать его, так как это может привести к декартовому произведению таблиц, в случае, если вы забудете добавить предикаты вWHERE пункт.

Посмотрите наВикипедия Присоединиться к статье а также в этомочень хороший пост о присоединениях Джеффа Этвуда.

Я думаю, что вы заинтересованы вINNER JOIN между таблицами, хотя существуют и другие варианты. Попробуй это:

SELECT t1.*, t2.*
  FROM Table1 t1
  INNER JOIN Table1_Table2 tt ON t1.id = tt.table1_id
  INNER JOIN Table2 t2 ON t2.id = tt.table2_id;

Я пропустил столбцы Table1_Table2 из списка выбора, поскольку там нет ничего особенного.

0

Хотя вышеприведенное решение работает, вы можете попробовать решение для рельсовых путей

Поскольку вам требуется таблица соединения только с первичными ключами участвующих таблиц, вы можете зацикливаться наhas_and_belongs_to_many ассоциация. Он делает то же самое, что и SQL-запрос за кулисами, и является более точным решением. Вы также можете посмотреть вhas_many through связь (также объясняется в связанных Railscasts), если вы хотите добавить больше столбцов в таблицу соединений.

Error: User Rate Limit Exceeded Red

Похожие вопросы