我有三个简化的表格:
Select
Balances.PartyName,
Balances.SecurityName,
Balances.BalanceEUR,
Parties.PartyName,
Parties.PartyGeneralID,
Parties.PartyAddress,
Securities.IssuerID,
Securities.MaturityDate,
Parties.PartyName, --(Issuers not clients)
Parties.PartyAddress --(Issuers not clients)
Parties.PartyGeneralID --(Issuers not clients)(因此,在最后一个表中,将有来自各方的客户的详细信息,以及基于IssuerID的表方的发行人详细信息,我不知道如何将这种识别包括在客户id和发行人id之前,所以地址不是客户,而是发行者)
from Balances
LEFT JOIN Parties on Parties.PartyID=Balances.PartyID
LEFT JOIN Securities on Parties.PartyID=Securities.IssuerID发布于 2019-01-08 13:51:03
要为Balances.PartyID选择各方,您需要在Balances.PartyID = Parties.PartyID上进行join。若要选择发行方,您需要join on Securities.IssuerID = Parties.PartyID。最好在select语句中声明表别名,以便知道哪个表用于什么:
Select
Balances.PartyName
, Balances.SecurityName
, Balances.BalanceEUR
, Parties.PartyName
, Parties.PartyGeneralID
, Parties.PartyAddress
, Securities.IssuerID
, Securities.MaturityDate
, issuer.PartyName as issuerName
, issuer.PartyAddress as issuerAddress
, issuer.PartyGeneralID as issuerGeneralId
from Balances
LEFT JOIN Parties party on Parties.PartyID=Balances.PartyID
LEFT JOIN Securities s on Balances.SecurityName = s.securityName -- ? Really?!
LEFT JOIN Parties issuer on s.IssuerID = issuer.PartyID我假设您通过使用Balances从Securities到SecurityName。这让我觉得这是一种可怕的方式,所以如果你更了解,请编辑你的帖子,并告诉我们到底是如何平衡和证券之间的关系。
发布于 2019-01-08 14:01:31
SELECT
BAL.partyName
, BAL.securityName
, BAL.balanceEUR
, PARTY.partyName
, PARTY.partyGeneralID
, PARTY.partyAddress
, SEC.issuerID
, SEC.maturityDate
, ISSUER.partyName AS issuerName
, ISSUER.partyAddress AS issuerAddress
, ISSUER.partyGeneralID AS issuerGeneralId
FROM balances BAL
LEFT JOIN parties PARTY on PARTY.partyID = BAL.partyID
LEFT JOIN securities SEC on BAL.securityName = SEC.securityName
LEFT JOIN parties ISSUER on SEC.issuerID = ISSUER.partyID我想这就是你要找的?奇怪的是,您使用的是名称,而不是JOIN的ID,但是,如果是这样的话,就使用它。
https://stackoverflow.com/questions/54092986
复制相似问题