2010-10-28 40 views
1

可能重复:
SQL query multiple tables基本的MySQL表加入?

我有这2个表:

ASSOCIATION_TABLE:[ID,键,名称,经理,办公室,银行,客户]

OFFICE_TAB LE:[ID,姓名,地址,电话]

我目前运行此查询来获取我需要一个数据集:

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:你是第一个,但我更漂亮:P相关:http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of -sql-joins.html – 2010-10-28 01:18:42

+0

更漂亮;感谢您的链接:D – bernie 2010-10-28 01:21:53

0

除了什么@Adam说,你可以看看官方MySQL documentation

我也建议你看看谷歌一个很好的SQL教程。

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

这是快速和肮脏的,我也建议为每个列和表使用指定别名。 – 2010-10-28 04:25:22