我对 SQL 还是个新手,所以这个问题听起来很基础。我使用的是 Oracle 数据库,我只能使用 select。我有 2 个表 Names
和 Worksite
。
名称
表:
ID Full name Type
-----------------------
1 Sibelga Company
2 Belgacom Company
3 Brussels Authority
4 Etterbeek Authority
Worksite
表:
ID Worksite CompanyID AuthorityID
-----------------------------------
12569 1 3
4563 2 4
1589 1 4
1489 1 3
基本上,我想获取每个工作站点的 Authority
和 Company
的全名。
我正在尝试进行连接,但它只返回 Authority
或 Company
的名称。我正在尝试以下查询,但它不起作用,知道我哪里出错了吗?
select
ID worksite,
Full name,
Full name
from
Worksite
join
Names on worksite.companyID = names.ID
最佳答案
如果你需要得到两个名字,那么你需要加入表两次:
SELECT
WS."ID worksite",
C."Full name" AS CompanyName,
A."Full name" AS AuthorityName
FROM
Worksite AS WS
LEFT OUTER JOIN Names C ON C.ID = WS.CompanyID
LEFT OUTER JOIN Names A ON A.ID = WS.AuthorityID
我使用了 LEFT OUTER JOIN
因为你没有提到 ID 是否总是被填充。如果它们总是存在,那么您可以使用 INNER JOIN
。我也非常注意名为“名称”的表格。对于设计不当的数据库,这通常是一个危险信号。
关于sql - 在一个特定列上连接多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34593764/