2014-01-17 2 views
0

Я пытаюсь собрать данные из трех таблиц.SQL JOINING, что лучше всего подходит

tableA, tableB и tableC. Таблица A - это моя основная таблица, содержащая большинство данных, которые я хочу извлечь.

Таблица A присоединяется к таблице B через a.id и b.new_id. Однако таблица C не имеет связи с таблицей A и соединяется только через таблицу B: b.board_id и c.board_id.

Каков наилучший способ присоединиться к этим таблицам, чтобы переменные отображали таблицу A?

Я могу соединить таблицы А и В, как это:

SELECT * FROM tableA a LEFT JOIN tableB b ON a.id = b.new_id и переменные хорошо. Но когда я пытаюсь добавить TableC, отображаются указанные переменные TableC, а не TableA.

Некоторые из таблиц содержат одинаковые имена столбцов. Как бы я присоединился ко всем трем?

+0

Все зависит от того, чего вы хотите достичь. Может быть, C имеет отношение «много к одному» к B? – NewInTheBusiness

+0

Мне нужно 4 из A, 3 из B и 2 из C. –

+0

Сколько строк вы хотите вернуть? Основное соединение будет похоже на ответы, но если вы, например, хотите сгруппировать результаты B и C в A, вам нужен другой подход. – NewInTheBusiness

ответ

1

Должно быть так:

SELECT * FROM tableA a LEFT JOIN tableB b ON a.id = b.new_id join tableC c on c.board_id=b.board_id 
1

Вы запрос должен выглядеть следующим образом:

SELECT a.col1 as a_col1, a.col2 as a_col2, . . . 
FROM tableA a LEFT JOIN 
    tableB b 
    ON a.id = b.new_id left join 
    tablec c 
    on b.board_id = c.board_id; 

Вам не нужно создавать отдельное название для всех столбцов, вы должны сделать это только для тех, с дубликатами.

Смежные вопросы