【问题标题】:ms access query joining two tablesms访问查询连接两个表
【发布时间】: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.

标签: sql ms-access ms-access-2010


【解决方案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 个空格正确格式化您的代码示例(请参阅编辑帮助),并添加说明您的建议如何有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 2016-10-15
  • 2017-08-26
  • 1970-01-01
  • 1970-01-01
  • 2019-02-18
  • 2014-11-07
相关资源
最近更新 更多