【问题标题】:Finding join path from one table to another查找从一个表到另一个表的连接路径
【发布时间】:2018-05-16 23:37:06
【问题描述】:

编辑:有没有办法或任何方法/算法来查找从一个表到另一个表的连接路径?

例子:

我想从人中选择名字,从国家为斯洛伐克的国家中选择名字。用户只会选择他想要选择的字段,我需要某种算法来发现我需要从一个人到一个城市到另一个国家加入。

【问题讨论】:

  • 据我所知,这是基本的 SQL。是的,加入所有 3 张桌子。使用 join ... on ... 语法非常简单(而不是用逗号交叉连接并在 where 子句中过滤,尽管它也可以工作)。
  • 但是,我想以编程方式创建它。是的,自己做很容易,但我希望它对任何桌子都是通用的和动态的。
  • 为什么?数据库针对此类查询进行了优化。你不能只是动态地替换表名和列名吗?或者真正的问题是必须连接哪些表?类似于广度优先搜索外键?
  • 必须加入哪些表,这是个问题
  • stackoverflow.com/questions/483193/… 这看起来很有用,但它只有在所有外键都存在时才有效,您也可以省略它们并且查询仍然有效......这在实践中经常发生。

标签: java sql sql-server algorithm select


【解决方案1】:

试试这个查询,

Select first_name from person p, city c, country cn where p.city_id = c.city_id and c.country_id = cn.country_id and cn.name = 'Slovakia'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 2015-03-14
    • 1970-01-01
    • 2016-08-07
    • 2019-08-09
    • 2014-09-28
    • 2020-09-28
    相关资源
    最近更新 更多