2010-10-28 6 views
1

Можно создать дубликат:
SQL query multiple tablesБазовая таблица MySQL Join?

У меня есть эти 2 таблицы:

ASSOCIATION_TABLE: [идентификатор, ключ, имя, менеджер, офис, банк, клиент]

и

OFFICE_TAB LE: [идентификатор, имя, адрес, телефон]

Я в настоящее время работаю этот запрос, чтобы получить набор данных, который мне нужен:

SELECT `name`, `key`, `office`, `manager`, `id` 
FROM `database`.`ASSOCIATION_TABLE` 
WHERE `association`.`customer`=4; 

Как я могу изменить этот запрос, чтобы отобразить название от OFFICE_TABLE , а не ID? Я думаю, что соединение с таблицей - это мое решение, но я уверен, какой вид или как его использовать.

Заранее спасибо.

ответ

2
SELECT `name`, `key`, ot.name AS OFFICE_NAME, `manager`, `id` 
    FROM `ASSOCIATION_TABLE` at 
     LEFT OUTER JOIN OFFICE_TABLE ot 
     ON ot.id = at.office 
WHERE `association`.`customer`=4; 

Это внешнее соединение с OFFICE_TABLE. Ваши результаты будут содержать любые записи в ASSOCIATION_TABLE, которые не имеют записей в OFFICE_TABLE.

Если вы хотите только возвращать результаты с записями в OFFICE_TABLE вы хотите внутреннее соединение, например:

SELECT `name`, `key`, ot.name AS OFFICE_NAME, `manager`, `id` 
    FROM `ASSOCIATION_TABLE` at 
     INNER JOIN OFFICE_TABLE ot 
     ON ot.id = at.office 
WHERE `association`.`customer`=4; 
+1

+1: Вы были первым, но мой был еще довольно: р Связанный: http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of -sql-joins.html –

+0

намного красивее; спасибо за ссылку: D – bernie

0

В дополнение к тому, что сказал @Adam, вы можете посмотреть на официальном MySQL documentation

Я также предлагаю вам посмотреть на google для хорошего учебника по SQL.

0

Это отличный сайт для дачи примеров разных типов объединений. Скорее всего, вы захотите использовать левое внешнее соединение.

http://www.w3schools.com/sql/sql_join.asp

0
SELECT o.`name`, `key`, `office`, `manager`, `id` 
FROM `database`.`ASSOCIATION_TABLE` 
JOIN `database`.`OFFICE_TABLE` o 
USING (id) 
WHERE `association`.`customer`=4; 
+0

Это было быстро и грязно, я также рекомендую указать псевдонимы для каждого столбца и таблицы, которые вы используете. –

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