SQL запрос к двум таблицам.

 
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1168
Привет всем, надо выполнить sql запрос на выборку записи из одной таблицы, но при этом проверить другую таблице в наличии записи от данного пользователя.
Есть таблица 1 {id,title,}
Есть таблица 2 {id, item_id, user_id}
Надо выбрать записи из Таблицы 1 при этом проверить нет ли запись от данного пользователя к этому материалу в Таблице 2.
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
small user social cms
Сообщений: 41
Evanescence:

Привет всем, надо выполнить sql запрос на выборку записи из одной таблицы, но при этом проверить другую таблице в наличии записи от данного пользователя.
Есть таблица 1 {id,title,}
Есть таблица 2 {id, item_id, user_id}
Надо выбрать записи из Таблицы 1 при этом проверить нет ли запись от данного пользователя к этому материалу в Таблице 2.

Привет. Опиши по подробней, что в итоге нужно получить на выходе и по какому полю связаны таблицы.
Редактировалось: 1 раз (Последний: 13 июля 2015 в 20:42)
Реклама
cms
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3591
Максим:
Опиши по подробней
table1 - {id,title}
table2 - {id, table1_id, user_id}
Надо выбрать все записи в table1, id которых не существуют в table2 в колонке table1_id для данного пользователя с user_id
Evanescence, v
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 244
Код PHP:
  1. SELECT a.*
  2. FROM table_1 a
  3. LEFT JOIN table_2 b ON b.user_id = a.user_id AND b.item_id = a.id
  4. WHERE b.id
Редактировалось: 2 раз (Последний: 13 июля 2015 в 21:32)
Разработка сайтов под ключ. Разработка дополнений. | skype: maga-ingdesign | email: [email protected] | Отзывы | Мой хостинг-провайдер | Магомед
Посетитель
small user social cms
Сообщений: 41
IngDesign:

Код PHP:
  1. SELECT a.*
  2. FROM table_1 a
  3. LEFT JOIN table_2 b ON b.user_id = a.user_id AND b.item_id = a.id
  4. WHERE b.id

По условию в table_1 нет user_id. Как я понял user_id должен передаваться в запрос. Тогда получится что-то такое:
Код PHP:
  1. SELECT a.*
  2. FROM table_1 a
  3. INNER JOIN table_2 b ON b.item_id = a.id
  4. WHERE b.user_id = $user_id
Редактировалось: 1 раз (Последний: 13 июля 2015 в 22:59)
Посетитель
small user social cms
Медаль
Сообщений: 865
SQL запрос к двум таблицам.
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1168
Всем спасибо за ответы.
В начале я не правильно описал задачу, мне надо получить опросы (cms_polls) при этом надо еще проверить таблицу (cms_polls_res) что бы пользователь не голосовал на этот опрос... После нескольких тестов понял что join не очень то подходить по этому задачу и нашел решения в NOT IN
Если кому интересно:
SELECT i.* FROM cms_polls i WHERE (id NOT IN (SELECT poll_id FROM cms_polls_res r WHERE r.poll_id = i.id AND r.user_id = 2));
Для двойки
Код PHP:
  1. $this->model->filter('id NOT IN (SELECT poll_id FROM cms_polls_res r WHERE r.poll_id = i.id AND r.user_id = '.$user_id.')');
  2. $polls = $this->model->getPolls();
Еще раз всем спасибо за ответы.
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: