2015-01-24 5 views
1

Я не могу сформировать запрос со следующими таблицами, в котором будет обнаружена вся таблица Notes из примечания, которая создается любым пользователем, который принадлежит зарегистрированной в той же компании пользователя ,SQL Query With Join for 2 Tables

Note:

note_id (int), 
note_text (varchar), 
created_by (int) 

User:

user_id (int), 
company_id (int) 

Помнить идентификатор пользователя пользователя передается в качестве параметра запроса.

Я хочу, чтобы забрать записи из таблицы Notes где CREATED_BY в (user_id всех пользователей, у которых company_id = company_id из LOGGED_IN_USER)

Пожалуйста, помогите мне сформулировать из запроса. Выглядит довольно прямо, но просто не может дотянуться до конца.

+0

Итак, вам понадобятся три таблицы: Примечание, Пользователь и Пользователь1, скажем так. Пользователь и Пользователь1 будут подключены к идентификатору компании. Что вы пробовали для SQL? И не то, что это слишком важно, но какая программа управления БД вы используете? ЭТО ПРОСТО - да, как сказал Vinnie .... – Smandoli

ответ

3

Я не уверен, что LOGGED_IN_USER - это таблица или другой объект, но если это таблица со столбцами, на которые вы ссылаетесь, такое соединение будет работать.

select note_text 
from Note n 
JOIN User u ON u.user_id = n.created_by 
JOIN LOGGED_IN_USER lin ON lin.user_id = u.user_id 
and lin.company_id = u.company_id 
1

Вам может понадобиться внешний ключ для user_id для Notes. и использовать INNER JOIN

0

Если я не понял ваш вопрос, попробуйте этот способ

SELECT note_text 
FROM Note n 
INNER JOIN User u ON u.user_id = n.created_by 
WHERE n.created_by= (select u.user_id from User where company_id=LOGGED_IN_USER LIMIT 1) 
1

Благодаря Винни и все для ваших ответов. Мне, наконец, удалось выяснить запрос. LOGGED_IN_USER_ID - это просто числовой параметр, который должен быть передан в запрос.

select n.* from Note n where 
n.created_by in (
select u1.user_id from User u1 inner join User u2 
on u1.company_id=u2.company_id and u2.user_id = :LOGGED_IN_USER_ID* 
) 

Еще раз спасибо.