【问题标题】:How do I reference table B rows twice from table A?如何从表 A 中两次引用表 B 行?
【发布时间】:2023-04-09 18:54:02
【问题描述】:
我是数据建模新手,请原谅新手问题:
如何在 2 列中对同一个表进行两次引用?如果我只是做了一次引用,我会通过调用列 LocationID 将它们链接在一起。例如。我有一个名为 Locations 的表和一个名为 Tours 的表:
地点:
身份证(PK),
国家,
状态,
街道地址,
等等
游览:
身份证(PK),
开始位置(我如何做这个参考?),
结束位置(还有这个?),
去过的地方,
描述,
成本,
日期,
等等
【问题讨论】:
标签:
sql
database
database-design
relational-database
data-modeling
【解决方案1】:
你的意思是这样的吗?
CREATE TABLE locations
(
id INT NOT NULL,
country VARCHAR(64),
state VARCHAR(64),
street_address VARCHAR(64),
PRIMARY KEY(ID)
);
CREATE TABLE tours
(
id INT NOT NULL,
start_location INT NOT NULL,
end_location INT NOT NULL,
description VARCHAR(255),
cost DECIMAL(19,2),
date DATE,
PRIMARY KEY(ID),
FOREIGN KEY (start_location) REFERENCES locations (id),
FOREIGN KEY (end_location) REFERENCES locations (id)
);
这里是SQLFiddle演示
【解决方案2】:
给表名起别名,然后用它们的新名称引用它们,就好像它们是单独的表一样,例如:
SELECT
*
FROM
TOURS
JOIN
LOCATIONS START_LOCATION ON
START_LOCATION.LOCATION_ID = TOURS.START_LOCATION
JOIN
LOCATIONS END_LOCATION ON
END_LOCATION.LOCATION_ID = TOURS.END_LOCATION