0

我想知道什么是SQL中的双向表?

我怎样才能阅读这些双向​​表

4

1 回答 1

1

双向表不是存储数据的方式,而是显示数据的方式。它没有说明数据的存储方式。

假设我们存储人以及他们的智商和他们居住的国家。表格可能如下所示:

命名智商国家
约翰史密斯 125 GB
玛丽琼斯 150 GB
胡安·洛佩兹 150 ES
丽兹艾伦 125 GB

显示智商和国家之间关系的双向表是:

   | 125 | 150
--+--------+----
国标 | 2 | 1
西式 | 0 | 1

或者

    | 国标 | ES
--+-----+---
125 | 2 | 0
150 | 1 | 1

为了从数据库中检索这些数据,您可以编写以下查询:

select iq, country, count(*)
from persons
group by iq, country;

SQL旨在检索数据;它并不是真的要关心它的展示和布局。因此,您将编写一个程序(用 PHP、C#、Java 等)将查询发送到数据库,接收数据并在循环中填充 GUI 网格。

在极少数情况下,SQL 可以提供布局本身,即以列和行的形式为您提供数据。这是预先知道一维的属性的时候。在给出的示例中,智商或国家通常不是这种情况(即,如果我没有向您展示,您将不知道表中存在哪些国家和哪些智商)。但当然,您可以先检索国家或智商,然后动态构建主查询(使用条件聚合或数据透视)。预先知道值的另一种情况是布尔值,例如,persons 表中的一个标志,用于显示一个人是否无家可归。如果您想要了解哪些国家/地区有多少无家可归者的结果,您可以轻松编写一个查询,其中包含无家可归者和非无家可归者两列。

如前所述:您可以在双向表中显示数据并没有说明这些数据的存储方式。上面我向您展示了一个表格示例。但是,假设您在许多城市都有商店,并且想知道在哪些城市生活得更瘦或更稠。您决定检查在哪些城市销售的 T 恤尺寸。因此,您接客户订单,查找客户和他们居住的城市。您还查找订单详细信息和他们所指的项目,然后获取所有类型的 T 恤。涉及的表格很多,但结果还是一个显示两个属性关系的双面表格。例如:

城市| 小号 | 中号 | 大号 | 特大号
---------+-----+------+-----+--
纽约 | 5% | 8% | 7% | 10%
洛杉矶 | 10% | 7% | 7% | 8%
芝加哥 | 1% | 4% | 6% | 11%
休斯顿 | 2% | 2% | 5% | 7%
于 2016-11-10T09:08:41.220 回答