繁体   English   中英

如何将属性连接到多对多表键?

[英]How to join attributes to a many-to-many tables keys?

我目前有一个名为边界的表,它作为两个国家实体的多对多关系:

CREATE TABLE borders
(
    Country1 VARCHAR(4),
    Country2 VARCHAR(4),
    Length DECIMAL 
        CHECK (Length > 0),

    CONSTRAINT BorderKey PRIMARY KEY (Country1,Country2) 
);

表中的每个元组看起来像:

|      country1       |    country2    |    length      |
|---------------------|----------------|----------------|
|          AL         |       MK       |     3271       |
|          GR         |       TR       |     1712       |

现在我想创建一个查询来投影一个表,您还可以在其中查看这两个国家的 GDP,从经济表中收集,如下所示:

CREATE TABLE Economy
(
    Country VARCHAR(4) CONSTRAINT EconomyKey PRIMARY KEY,
    GDP DECIMAL CONSTRAINT EconomyGDP
        CHECK (GDP >= 0)
);

结果表应如下所示:

|      country1       |    country2    |      GDP1      |      GDP2      |     length      |
|---------------------|----------------|----------------|----------------|------------------
|          AL         |       MK       |       428      |       734      |       3271      |
|          GR         |       TR       |       300      |       823      |       1712      |

其中 GDP1 对应于国家 1,GDP2 对应于国家 2。

您可以为每个国家加入两次 Ecomny 表

喜欢

CREATE TABLE borders( Country1 VARCHAR(4), Country2 VARCHAR(4), Length DECIMAL CHECK (Length > 0), CONSTRAINT BorderKey PRIMARY KEY (Country1,Country2) );
 INSERT INTO borders VALUES('A1','A2',1000)
 CREATE TABLE Economy( Country VARCHAR(4) CONSTRAINT EconomyKey PRIMARY KEY, GDP DECIMAL CONSTRAINT EconomyGDP CHECK (GDP >= 0) );
 INSERT INTO Economy VALUES ('A1',100);
 INSERT INTO Economy VALUES('A2',101);
 SELECT b.Country1,b.Country2, e1.GDP as GDP1,e2.GDP AS GDP2,b.Length FROM borders b JOIN Economy e1 ON b.Country1 = e1.Country JOIN Economy e2 ON b.Country2 = e2.Country
 国家1 | 国家2 |  GDP1 |  GDP2 | 长度:------- |:------- |  ---: |  ---: |  -----: A1 |  A2 |  100 |  101 |  1000

db<> 在这里摆弄

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM