|
1
1
我尝试了这个查询,它给出了您描述的输出:
输出:
|
|
|
2
1
你可能无意中完全弄混了你的问题,使它很难理解和回答(至少对于我们这些头脑小的人来说),你能用合理的表和字段名,以及更完整的索引描述来重述它吗? 编辑: 您是否可能描述一种销售产品的情况,有时相同的产品也可以作为组件递归地包含在其他产品中?如果是这样,就有更多传统的成功方法来模拟这种情况。 |
|
|
3
0
只要“最后一次发生的日期”在sub1和sub2列中表示,这绝对是可能的。请注意,我列出的代码大部分是伪代码…你必须根据你的DBMS风格来填充空白。 要将结果集限制为super和sub1中的列(不带重复项):
(显然,您应该尽量避免选择*……选择您实际需要的列) 您的From子句如下所示:
order by将使用coalesce函数(如果您的DBMS支持它)来确定要排序的列(coalesce选择参数列表中的第一个非空值):
或者,如果没有可用的合并,但有可用的isNull函数,则可以链接isNull:
|
|
|
4
0
您没有建议或暗示可以重新设计模式,所以我提出这个问题可能不是对您和我的时间的最佳利用,但是:您的表可以吗? 有 这样设计?此应用程序是否已在生产中使用? 你的陈述引发了我的思考:
我怀疑这是SUB2包含FK到SUB1的理由。但在我看来,这就像是非规范化(关系方面)或违反了 DRY 原则(用敏捷的术语)在任何一种情况下,它都可能使你的生活比需要的更复杂。 我的建议(值得你付出代价)是把fk去掉到sub1。代替它,您可以1)在页面的创建事件中包含一个select,作为查询的一部分;或者2)将创建日期移到页面表中。(您选择哪一个选项取决于模式中存在多少额外的复杂性;我通常更喜欢1而不是2。) 我认为这将简化您的更新和查询。您的里程可能会有所不同。 |
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
ojek · 如何对SQL结果进行分组和编号? 1 年前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 1 年前 |
|
|
Sax · 规范化Google表格(第一步) 1 年前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |