我还是SQL的新手,所以这个问题可能听起来很基本。我使用的是Oracle数据库,我只能使用选择。我有2个表Names
和Worksite
。
Names
表:
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
答案 0 :(得分:4)
如果你需要获得两个名字,那么你需要两次加入桌子:
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
。我也非常担心一个叫做“名字”的桌子。对于设计不佳的数据库而言,这通常是一个危险信号。