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

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 13 июля 2015 в 16:27
Привет всем, надо выполнить sql запрос на выборку записи из одной таблицы, но при этом проверить другую таблице в наличии записи от данного пользователя.
Есть таблица 1 {id,title,}
Есть таблица 2 {id, item_id, user_id}
Надо выбрать записи из Таблицы 1 при этом проверить нет ли запись от данного пользователя к этому материалу в Таблице 2.
#2 13 июля 2015 в 20:40


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

Evanescence

Привет. Опиши по подробней, что в итоге нужно получить на выходе и по какому полю связаны таблицы.
#3 13 июля 2015 в 21:01

Опиши по подробней

Максим
table1 — {id,title}
table2 — {id, table1_id, user_id}
Надо выбрать все записи в table1, id которых не существуют в table2 в колонке table1_id для данного пользователя с user_id
Evanescence, v
#4 13 июля 2015 в 21:31
  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
#5 13 июля 2015 в 22:58


  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

IngDesign

По условию в table_1 нет user_id. Как я понял user_id должен передаваться в запрос. Тогда получится что-то такое:
  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
#6 14 июля 2015 в 04:16
#7 14 июля 2015 в 07:46
Всем спасибо за ответы.
В начале я не правильно описал задачу, мне надо получить опросы (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));
Для двойки
  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();
Еще раз всем спасибо за ответы.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.