"GM Fiat technically matters most, but here is how I'd rule it."
"Okay, let's say we have two guys, a zombie and a vampire, and two forms of resurrection, Raise Dead and True Resurrection. Raise Dead requires a corpse, to me, a zombie is not a corpse. That is like saying -2 = 0. Dead is 0, undead is Negative. If you kill the zombie and cast Raise Dead, the person is now alive, the person he was before he died (presuming his soul is still available and agrees to be raised)."
"Now, True Resurrection requires no corpse, and the zombie isn't intelligent, so it has no 'soul', presumably. So I can True Resurrect my friend back, and he could got out and actually kill his zombie former body. How often do you get to say that?"
"Alright, now the vampire. Raise Dead + Vampire has the same effects. The body isn't a corpse, so it can't be destroyed. Now, in DnD a staked vampire is inanimate, not destroyed. One could argue that is a corpse, but that would be DM fiat, and I'd make something really weird happen."
"Vampire + True Resurrection, however, also runs into problems. The vampire is intelligent, and for all intents and purposes, retains the person's old memories and such. That implies his soul is still in there. A GM could rule that if the soul wishes to leave, and there isn't some kind of vampire or necromancer controlling his body, the vampire might die and become your friend in a new body. However, otherwise, you need to kill the vampire to bring your friend back, because his soul is still stuck, regardless of your need for a corpse."
"There's my rulings. Every GM is different though, so I can't speak for everyone."