如何在oracle中结合这两个sql查询?

时间:2015-11-13 03:56:16

标签: sql oracle

我有这些表,巨型化身是有母亲和父亲的化身的孩子。

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;

1 个答案:

答案 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;