如何从表A中两次引用表B行?

时间:2014-01-08 04:34:24

标签: sql database database-design relational-database data-modeling

我是数据建模的新手,所以请原谅新手问题:

如何在2列中对同一个表进行两次引用?如果我只是通过调用列LocationID将它们链接在一起就做了引用。例如。我有一个名为Locations的表,还有一个名为Tours的表:

位置: ID(pk), 国家, 州, 街道地址, 等

游: ID(pk), 开始位置(我如何制作此参考?), 结束位置(和这个?), 访问的地点, 描述, 成本, 日期, 等

2 个答案:

答案 0 :(得分:2)

你的意思是这样吗?

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 演示

答案 1 :(得分:0)

给表名别名,然后用新名称引用它们,就像它们是单独的表一样,例如:

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