[英]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.