Hey guys here are my current tables

What I am trying to do retrieve a sum of the "pos_neg_neu" column of the [bookswap_feedback] table for specific users. The problem is to try and ensure I dont have alot of duplicate columns in my tables I dont want to have too many repeating columns in diff tables. For example I dont want to add buyer and seller to 3 diff tables and have that info repeated.
I have the username of the person I need to select so my question is how can I use the username who will also be the "seller" in the [bookswap_transactions] table and link it to their feedback via the "trans_id" to tally their "pos_neg_neu" feedback?
Also I repeat the username in the [bookswap_transactions] table since its available through the [bookswap_books] table already and they can be linked via "listingnumber". The only reason I do not eliminate the "seller" column is because of the code I would have to do to retrieve the information from the other table based on my knowledge of SQL. Is there a way to retrieve info like this 3 layers deep? Say I was looking for feedback numbers and has the username only. Can I use the username to work my way through [bookswap_books] -> [bookswap_transactions] -> [bookswap_feedback] and get a sum of a column in the last table?
Can anyone offer some code that would do it or at least point me in the direction of interacting with a bunch of tables at once to get data from one based on anothers data when they have a common column? Any help appreciated!
--Grant