我有这些表,巨型化身是有母亲和父亲的化身的孩子。
avatar (avatarID,playerID,speciesName,charName,avatarDob,strength,gender,hoard)
megaAvatar(megaAvatarID,charName,megaAvatarDob,speciesName,magicPower,hoard,gender)
relationship(relationshipID,megaAvatarID,fatherAvaID,motherAvaID)
如何将这两个查询组合成一个可以显示父亲(头像)和母亲(头像)细节的查询
SELECT megaAvatar.charName, megaAvatar.speciesName, megaAvatar.magicPower,
avatar.charName AS fatherName, avatar.speciesName AS fatherSpeciesName,
species.speciesCost AS fatherSpeciesCost
FROM megaAvatar
INNER JOIN relationship ON megaAvatar.megaAvatarID = relationship.megaAvatarID
INNER JOIN avatar ON relationship.fatherAvaID = avatar.avatarID
INNER JOIN species ON avatar.speciesName = species.speciesName
WHERE megaAvatar.hoard > 16;
SELECT megaAvatar.charName, megaAvatar.speciesName, megaAvatar.magicPower,
avatar.charName AS motherName, avatar.speciesName AS motherSpeciesName, species.speciesCost AS motherSpeciesCost
FROM megaAvatar
INNER JOIN relationship ON megaAvatar.megaAvatarID = relationship.megaAvatarID
INNER JOIN avatar ON relationship.motherAvaID = avatar.avatarID
INNER JOIN species ON avatar.speciesName = species.speciesName
WHERE megaAvatar.hoard > 16;
答案 0 :(得分:0)
我没有在Oracle SQL中尝试过,因为我没有...但它适用于其他DBMS ......
我的想法是再次加入同一个表并使用不同的别名..
SELECT megaAvatar.charName, megaAvatar.speciesName, megaAvatar.magicPower,
fatherAvatar.charName AS fatherName, fatherAvatar.speciesName AS fatherSpeciesName,
motherAvatar.charName AS motherName, motherAvatar.speciesName AS motherSpeciesName,
fatherSpecies.speciesCost AS fatherSpeciesCost, motherSpecies.speciesCost AS motherSpeciesCost
FROM megaAvatar
INNER JOIN relationship ON megaAvatar.megaAvatarID = relationship.megaAvatarID
INNER JOIN avatar as fatherAvatar ON relationship.fatherAvaID = fatherAvatar.avatarID
INNER JOIN species as fatherSpecies ON fatherAvatar.speciesName = fatherSpecies.speciesName
INNER JOIN avatar as motherAvatar ON relationship.motherAvaID = motherAvatar.avatarID
INNER JOIN species as motherSpecies ON motherAvatar.speciesName = motherSpecies.speciesName
WHERE megaAvatar.hoard > 16;