Another often overlooked reason was since WAR was never declared (it was actually a Peace Keeping operation, Police Action) when a solder's tour was up, he was rotated stateside again. Because of that, just when a solder became proficient he went home. So there was a constant influx of under trained and un motivated people coming in the replace the "salty" solders that were going home. If war had been declared, a solder's tour of duty could have been extended. This didn't happen.
Another reason was that the Vietnamese were use to fighting. they had been doing it for off and on for hundreds of years, and they fought a different kind of war. Not only because it was a guerilla war, but because they didn't have to live up to the same morals we in this country did. They could do a LOT to demoralize and terrify us than we could not do to them. We had to answer to the folks back home, they didn't.
My EX-Brother in law was attached for a short time to the ROK Marines (Republic of Korea). THEY fought the same kind of war as the North Vietnamese did, and over all had better effect. They would use the same terror tactics as the enemy. If we could have fought that kind of war, and we had not been shoestringed by the politicians and the folks back home, it could have ended differently.
Vietnam was the first war aired LIVE on TV, it brought the true horror of war to everyone's living room on the 6 o'clock news. I think the government learned a lesson from that, and will never let THAT happen again. Look how much control they kept over the news media during Desert Storm. It disgusted me! People SHOULD know how ugly war is, then they would be less apt to want to start another one.
I know that broadcasting live can give away valuable information to the enemy, so I can understand not letting the news go out live. BUT there should be NO restrictions other than that IMO. People NEED to know that war isn't a pretty or glamorous thing!