SQL запрос JOIN - нужна помощь

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 22 октября 2015 в 15:00
Привет всем.
Мне надо сделать выборку всех комментарии из постов конкретного пользователя.
Так как в таблице comments не содержится ID автор материала, решил сделать связку по target_id
  1. public function getMyComments($user_id) {
  2. $this->selectOnly('i.*'); //все поля комментарии
  3. $this->joinUserLeft(); //пользователь
  4. $this->join('con_posts', 'p', "p.id = i.target_id AND p.user_id = '{$user_id}'"); //связь
  5. $this->filterEqual('p.user_id', $user_id); //условие
  6. $this->filterNotEqual('i.user_id', $user_id); //убрать комментарии самого автора
  7. return $this->get('comments', function($item, $model){
  8. $item['user'] = array(
  9. 'id' => $item['user_id'],
  10. 'nickname' => $item['user_nickname'],
  11. 'avatar' => $item['user_avatar']
  12. );
  13. return $item;
  14. });
  15. }
Запрос возвращает все комменты из постов данного автора, но и еще несколько постов пользователя 1
Подскажите пожалуйста, что я делаю не так?
  1. SELECT i.*, u.nickname as user_nickname, u.avatar as user_avatar
  2. FROM cms_comments i
  3. LEFT JOIN cms_users as u ON u.id = i.user_id
  4. JOIN cms_con_posts as p ON p.id = i.target_id AND p.user_id = '2'
  5. WHERE (p.user_id = '2') AND (i.user_id <> '2')
#2 22 октября 2015 в 18:53
Решил проблему, надо было добавить проверку на target_subject так как совпадали ID других типов контента.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.