|
|
1
2
概念的名称是“交叉表”,可以通过多种方式实现。 MS Access对SQL进行了专有扩展,以实现这一点。SQLPre-2K5有一个case技巧,2K5和更高版本有pivot,但我认为您仍然需要知道列是什么。 |
|
2
1
有些数据库确实支持某种创建交叉表的方法,但我认为大多数数据库都需要知道 列提前,因此您必须修改SQL(并获取支持此类扩展的数据库)。 另一种选择是创建一个程序,该程序将对第二个“Easy”表进行后处理,以使客户机将交叉表作为输出。这可能比修改或动态生成SQL更容易,更通用。 关于解释这个问题的方法…您可以在Excel中显示需要多少步骤才能获得所需的结果:
然后说SQL只提供源数据,所以它当然要做更多的工作。 |
|
|
3
1
这个概念叫做
比如,平等是一种二元关系,“顾客有这么多这种类型的宠物”是一种三元关系等等。 当您看到此结果集时:
它实际上是一个由所有可能的 领域 价值观在这一关系中。
就像,一个顾客
在结果集中看不到这样的行:
,因为第一行是假的(客户
通常,您试图构建的报表是使用知道如何转换关系的报表软件构建的。
|
|
|
4
1
我一直称之为旋转,但这可能不是正式名称。 不管它叫什么,您几乎可以用普通的SQL完成所有这些工作。
显然,缺少的是动态列。我不知道在直接SQL中是否可以这样做,但是在存储过程中,在第一次查询宠物列表之后,当然可以动态生成查询。查询内置到字符串中,然后该字符串用于创建准备好的语句。 |
|
|
developer · 带外键的SQL表设计 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
b126 · 在两种不同的Oracle模式上执行相同查询的速度差异很大 2 年前 |
|
|
robertspierre · 在多对多关系中自动删除未引用的行 2 年前 |
|
|
Michael Samuel · MYSQL在以下情况下自动创建索引 8 年前 |