ms访问查询连接两个表

Posted

技术标签:

【中文标题】ms访问查询连接两个表【英文标题】:ms access query joining two tables 【发布时间】:2013-10-01 16:11:42 【问题描述】:

我有两个表格需要输出为不可编辑的表格。我需要查询的语法。

TableOne has fields id, customer_id, date, type_id.  
TableTwo has fields type_id, type_name.  

我有:

SELECT * FROM TableOne WHERE customer_id=someVariable  

但它只是为 type_id 输出一个数字。我需要它打印出与 type_id 关联的 type_name 而不是打印出数字。如何更改 SQL 的语法以使其执行此操作?

【问题讨论】:

联接表是编写查询的一项非常基本的技能。既然你不得不问这个问题,我听说这本书的好东西,在 10 分钟内自学 Sql。 @DanBracuk 你能推荐网络上好的免费资源吗? Stack Overflow 不是为图书做广告的地方,因为发布图书建议的人可能与作者或出版商有关。人们从谷歌搜索中找到这些帖子,寻找免费答案。 @CodeMed - 谷歌sql tutorial. 【参考方案1】:

只需使用 LEFT JOIN 或 INNER JOIN

即使你在 t2 中没有对应的 type_id,LEFT JOIN 也会给你所有的 t1 INNER JOIN 只会检索 t1 和 t2 中存在对应 type_id 的结果。

select t1.Id, t1.customer_id, t1.date, t2.type_name
FROM TableOne t1
LEFT JOIN TableTwo t2 on t1.type_id = t2.type_id;

【讨论】:

Althaus 谢谢。 +1 快速响应。并感谢答案。【参考方案2】:
SELECT 
    cus.CustomerID,
    cus.Name,
    cus.Email,
    cus.MobileNo,
    cus.OtherNo,
    bloc.Block,
    flor.FlooerNo,
    flat.FlateNo 
FROM 
    ((Customer cus inner join BuildingBlocks bloc on cus.Block=bloc.BlockId) inner join BuildingFloors flor on cus.Flooler=flor.FlooerID)inner join BuildingFlateNo flat on cus.FlateNo=flat.FlateId 
WHERE
    cus.Isdeleted=false

【讨论】:

能否请您使用 4 个空格正确格式化您的代码示例(请参阅编辑帮助),并添加说明您的建议如何有帮助。

以上是关于ms访问查询连接两个表的主要内容,如果未能解决你的问题,请参考以下文章

左连接 SQL 查询 - MS Access

MS Access:使用多个连接更新语句 [重复]

无法为 MS Access 数据库中的同一表查询编写左外连接

MS Access SQL:使用另一个表中的Sum更新连接查询

MS 通过 odbc 访问 mySql 连接慢

MS Access 中通过 ODBC 连接 MS SQL 表的查询非常慢