Возможно в фильтре необходимо указывать имена таблиц. Например:
phone.id_friends in (select friends.id_friends from friends where surname like \"%В%\")
Ну и конечно же и Вам я посоветую читать и читать ассистента. Но не просто читать, а читать на предмет того, как Qt оповещает программиста об ошибках. Qt не использует исключений на выход. Она просто периодически в интерфейсы вставляет lastError или errorString, ну или еще что-нибудь. А вы уже должны во время возникновения вопросов моментально нагородить в своей программе qDebug() << *.lastError().text(); qDebug() << Q_FUNC_INFO. Хотя вывод макроса Q_FUNC_INFO почему-то не содержит номера строки.