Why you need to create derived table? why not this way:
SELECT
user_id, name, address, phone, city, GROUP_CONCAT(DISTINCT book_title SEPARATOR ' ') book_title
FROM
users us
LEFT OUTER JOIN user_books ub ON ub.bid = us.user_id
GROUP BY us.user_id