基本MySQL表加入?

时间:2010-10-28 01:10:58

标签: sql mysql database join

  

可能重复:
  SQL query multiple tables

我有这两张桌子:

ASSOCIATION_TABLE:[id,key,name,manager,office,bank,customer]

OFFICE_TABLE:[身份证,姓名,地址,电话]

我目前正在运行此查询以获取我需要的数据集:

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

如何修改此查询以显示OFFICE_TABLE中的NAME,而不是ID?我认为表连接是我的解决方案,但我很确定它是什么类型,或者如何使用它。

提前致谢。

4 个答案:

答案 0 :(得分: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 :(得分:0)

除了@Adam所说的,您还可以查看官方MySQL documentation

我还建议你在谷歌上寻找一个好的SQL教程。

答案 2 :(得分:0)

这是一个很棒的网站,可以举例说明不同类型的连接。很可能你会想要使用左外连接。

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

答案 3 :(得分:0)

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