I currently am trying to find a solution to this problem: Find the authors whose books sell for less than the average price for that books publisher

the tables look like this:
authors
fields:
auid | auname | auphone

book_author
Fields:
isbn | auid

books
Fields:
isbn | Title | pubid | price

publishers
pubid | pubname | pubphone

And my code
Code:
SELECT a1.auname
FROM books AS b2, publishers AS p2, authors AS a2, book_author AS ba2,
 authors AS a1, book_author AS ba1, books AS b1, publishers AS p1
WHERE b2.pubid=p2.pubid And b1.pubid=p1.pubid And ba1.isbn=b1.isbn 
And ba2.isbn=b2.isbn And ba1.auid=a1.auid And ba2.auid=a2.auid
GROUP BY a1.auname
HAVING AVG(b2.price)>Avg(b1.price);
It returns most of them except a author that has a book in two publishers have his books averaged too even though his name should also show for both books.
ANY help or idea's a great thanks