Как правильно сделать запрос на rxJava?
Дальше ваш нужен.switchMap(article -> Observable.zip(
    getUser(...).first(), 
    getCategory(...).first(),
     (user, category) -> { return new ArticleItem(...); })
.toList()
.subscribe(listOfArticleItems -> ...);
по всем операторам почитайте документацию, станет понятнее.
Кстати, для работы с БД удобно использовать реактивную обёртку StorIO, а не городить свои костыли.
все зависит от того как надо их объединить. выбирайте ваш случай.
https://github.com/ReactiveX/RxJava/wiki/Combining...
на первый взгляд вам zip нужен