【发布时间】:2018-03-01 08:00:58
【问题描述】:
我有一个像下面这样的文件。
Table1|Column1
Table2|Column1
Table5|Column1
Table3|Column2
Table2|Column2
Table4|Column3
Table2|Column3
Table2|Column4
Table5|Column4
Table2|Column5
如果 Column1 中的表名具有相同的属性,我将尝试从以下文件生成动态 SQL JOIn
select * from Table1 a inner join Table2 b on a.Column1=b.column1 inner join Table5 c on a.Column1=c.column1
和
select * from Table3 a inner join Table2 b on a.column2 = b.column2
..etc 直到文件结束
最好的方法是什么,请指教。
请注意,同一列可以出现在 2 个以上的表中(如最多 20 个表然后连接将重复 19 次)
【问题讨论】:
-
应该如何加入
Table2.Column5?似乎连接是通过列名完成的,从这个描述中连接表似乎很奇怪,请注意,取决于 dbmsselect *可能由于列名重复而失败,建议选择具有表别名的特定列,使用旧语法怎么样select .. from table1, ..table5 where table1.column1 = table2.column1 ... -
关于 Table2.Column5 如果存在另一个 TableN 和 column5 则加入 else 忽略它。基本上,这些表都是来自特定数据模型域的相关转储,作为测试的一部分,我试图查看至少部分外键,主键连接测试是否可以自动化。我可以使用任何连接语法,只要它有效。如果有人可以帮助弹出至少具有相同列的表名,我可以尝试使用连接并生成其余的连接语法。@NahuelFouilleul
标签: bash parsing text dynamic-sql