我想知道什么是SQL中的双向表?
我怎样才能阅读这些双向表
双向表不是存储数据的方式,而是显示数据的方式。它没有说明数据的存储方式。
假设我们存储人以及他们的智商和他们居住的国家。表格可能如下所示:
命名智商国家 约翰史密斯 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%