То, что вы получите 30 результатов, если у определенного пользователя есть 6 фотографий и 5 комментариев, вполне нормально, поскольку вы просто выбираете декартово произведение всех фотографий и комментариев на основе идентификатора пользователя. Структура таблицы может пролить некоторый свет на возможные решения, но если комментарии связаны с фотографиями и вы хотите получить все фотографии и комментарии, опубликованные конкретным пользователем, вы можете использовать что-то вроде:
SELECT * FROM rphotos p
LEFT JOIN comments c on c.photoID = p.photoID
WHERE p.userID = '$defineUserID' OR c.userID = '$defineUserID';
Лично я бы разделил это на 2 запроса и отобразил бы результаты отдельно, потому что смешивать их не имеет никакого смысла для меня, т.е. использовать
SELECT * FROM rphotos p
WHERE p.userID = '$defineUserID';
и
SELECT * FROM comments c
WHERE c.userID = '$defineUserID';
редактировать на основе комментария
Если поля идентификаторов имеют одинаковый тип, вы можете использовать что-то вроде
select actionID, relatedID, creationDate from
(
select 1 as actionID, photoID as relatedID, creationDate from rphotos
where userID = '$defineUserID'
union
select 2 as actionID, commentID as relatedID, creationDate from comments
where userID = '$defineUserID'
) actions
order by creationDate desc;
actionID будет 1 для фотографии, 2 для комментария, и с помощью поля relatedID вы можете найти связанные данные (если вам это нужно, в противном случае вы можете просто удалить их из запроса).
Кстати, вы, вероятно, хотите дополнительно отфильтровать результаты (т. Е. На основе даты), чтобы предотвратить объединение множества строк в объединение, которые вы не будете отображать ...