2016-05-26 3 views
1

У меня есть три таблицы:Mysql как присоединиться таблицы

  • Таблица 1 содержит первичный ключ.
  • Таблица 2 содержит внешний ключ, равный первичному ключу таблицы 1.
  • Таблица 3 содержит внешний ключ, равный первичному ключу таблицы 2.

ВОПРОС: ли это можно выбрать информацию из таблиц 2 и 3, зная только первичный ключ таблицы 1? Если да, пожалуйста, дайте краткий пример SELECT QUERY. Я попытался сделать внутреннее соединение, но получил синтаксическую ошибку.

+1

Да, это просто. Внутреннее соединение должно это сделать. Покажите, что вы попробовали, и мы поможем вам исправить это. – Barmar

+0

@codenoob сообщите мне, если бы мой ответ сработал для вас. – Webeng

+0

@ Barmar и whatsup Barmar :), я закончил тем, что не пошел с pheanstalk в конце концов. Я попросил разработчиков beanstalk несколько вопросов и в конечном итоге решил использовать базу данных для обмена межсерверным скриптом. Надеюсь, он выполнит эту работу, хотя я думаю, что узнаю через неделю или около того. – Webeng

ответ

2

Да, вы можете.

Пример:

table_a    table_b    table_c 
_______________  _______________  _______________ 
| id | name | | id | gender | | id | age | 
|------+--------| |------+--------| |------+--------| 
| 1 | sam | | 1 | m | | 1 | 18 | 
|------+--------| |------+--------| |------+--------| 
| 2 | ana | | 2 | f | | 2 | 22 | 
|------+--------| |------+--------| |------+--------| 

Для того, чтобы получить следующий результат:

_________________________________ 
| id | name | gender | age | 
|------+--------+--------+--------| 
| 1 | sam | m | 18 | 
|------+--------+--------+--------| 
| 2 | ana | f | 22 | 

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

SELECT a.id, a.name, b.gender, c.age 
FROM table_a AS a 
LEFT JOIN table_b AS b 
    ON a.id = b.id 
LEFT JOIN table_c AS c 
    ON a.id = c.id 

PS: только ответил это сделать искусство ascii xD!

+2

Мне все равно, как вы пишете код дома , но, пожалуйста, используйте ANSI JOIN при отправке ответов здесь. Мы стараемся продвигать хороший стиль кодирования. – Barmar

+0

@Barmar будет ли новый отредактированный оператор sql теперь эквивалентен предыдущему? За исключением теперь я использую левое соединение вместо внутреннего по умолчанию, которое я предпочитаю просто не потерять ни одной строки. – Webeng

+0

Да, это намного лучше. – Barmar

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