I have an author page, i want to list post from current author's categories.

e.g. Im viewing John's page, and John did write Sport, Tech, News, Computer category

Then my code list from this(Sport, Tech, News, Computer) categories list random 10 post.

Regards

My code

    <?php global $post, $wpdb;
    $author_id = $post->post_author;
    $categories = $wpdb->get_results("
    	SELECT DISTINCT(terms.term_id) as ID, terms.name, terms.slug
    	FROM $wpdb->posts as posts
    	LEFT JOIN $wpdb->term_relationships as relationships ON posts.ID = relationships.object_ID
    	LEFT JOIN $wpdb->term_taxonomy as tax ON relationships.term_taxonomy_id = tax.term_taxonomy_id
    	LEFT JOIN $wpdb->terms as terms ON tax.term_id = terms.term_id
    	WHERE 1=1 AND (
    		posts.post_status = 'publish' AND
    		posts.post_author = '$author_id' AND
    		tax.taxonomy = 'category' )
    	ORDER BY terms.name ASC
    ");
    
    foreach($categories as $category) : 
    $catnumber = $category->ID.',';
    endforeach;?>
    <?php 
    
    $args = array(
    'category__and' => array( $catnumber )
    , 'showposts'=> '10'
    );
    
    $my_query = new WP_Query( $args );
    ?>
    <ul>
    <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
        <li>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>  
        </li>
    <?php endwhile; ?>
    <ul>
    <?php wp_reset_postdata(); ?>