【发布时间】:2017-03-17 00:54:11
【问题描述】:
我会感谢一些有关 MySQL 的帮助。
这是我的架构的一部分(第一个表称为“站点”): db_schema
sites.contractor 链接到 companyornaturalperson.idCompaniesOrNaturalPerson
我正在构建一个视图,以便从这两个表中收集一些信息。 我需要将 sites.latitude、sites.longitude 和承包商名称 (companiesornaturalperson.name) 放入我的视图中。
所以我写了:
CREATE VIEW `data_entry` AS
SELECT
`sites`.`longitude` AS longitude,
`sites`.`latitude` AS latitude,
(SELECT `companiesornaturalperson`.`name`
FROM sites sites
INNER JOIN
companiesornaturalperson companiesornaturalperson ON sites.contractor = companiesornaturalperson.idCompaniesOrNaturalPerson
) AS contractor_name
FROM sites
当我的站点表中有一行时,这运行良好,但是当我有不止一行时,这会导致我出现“子查询返回超过 1 行”错误。
我明白这是因为我的加入在这些情况下带来了不止一个价值。问题是我不知道如何只返回一个值(某种“WHERE sites.id = 站点的真实 id”)。我搜索了很多次,但仍然无法解决。
【问题讨论】:
-
如果存在多个承包商,它应该返回什么?您是否只想每经纬度返回 1 个?
-
每个站点只有一个承包商。
标签: mysql sql database join view