根据键自动连接SQL表

时间:2017-10-05 15:22:11

标签: sql sql-server database sql-server-2008

是否有一种方法可以自动连接具有主要关系到外部关系的表,而不是指定加入这些值?

2 个答案:

答案 0 :(得分:1)

out out out答案是“no” - 我知道的RDBMS不允许你在ON子句中指定用于以非笛卡尔方式连接两个表的列,但它可能无所谓 ......

...因为现在通常多层应用程序是使用数据访问库构建的,这些库需要考虑数据库中定义的关系。选择实体框架之类的东西,如果你的数据库已经存在,那么你就可以从中构建一个EF的上下文,它会产生一组服从事物前端代码关系的对象

从技术上讲,你永远不会自己写一个ON条款,因为如果你对EF说些什么:

context.Customers.Find(c => c.id = 1) //this finds a customer
  .Orders //this gets all the customer's orders
    .Where(o => o.date> DateTIme.UtcNow.AddMonths(-1)); //this filters the orders

你已经获得了上个月客户ID 1提出的所有订单,而没有自己编写单个ON条款...... EF在幕后写了但是在你的问题的精神中有表格通过关系相关,我们使用了一个框架,该框架使用该关系将数据与前端的目的相关联。您所要做的就是使用执行此操作的数据访问库,如果您厌恶自己写ON条款:)

虚拟确定会有一些类似的ORM /映射/数据访问库供您选择前端语言 - 我只是选择了C#中的EF,因为这是我所知道的。如果你正在寻找那里有什么,谷歌的{language of choice} ORM(如果你使用的是OO语言) - 你提到了python,。似乎SQLAlchemy是一个受欢迎的(但请注意,SO答案不是推荐特定软件)

答案 1 :(得分:0)

如果你的意思是你可以在查询时写一个不需要ON子句的JOIN,那么没有。

在SQL Server中无法执行此操作。