2013-04-12 2 views
0

Пожалуйста, помогите всем!MySQL Зарегистрируйтесь в полете

Я хотел бы, например, user_id 27, чтобы вернуть case_id 1 и 2, потому что другой user_id с той же компанией создал случаи.

Идентификатор пользователя 27 - пример, так как таблица довольно большая и поэтому мне понадобится обобщенная инструкция SQL.

Активный запрос CodeIgniter будет очень полезен, но может быть слишком сложным?

Cases 
case_id | case_user | case_name 
1, 25, Test Case A 
2, 25, Test Case B 
3, 26, Test Case C 

Users 
user_id | user_email | user_company 
25, example-email-a, Company Alpha 
26, example-email-b, Company Beta 
27, example-email-c, Company Alpha 

Большое спасибо

+0

Каковы ваши отношения между таблицами? В этом случае вы можете использовать оператор! =, Но это не поможет для больших таблиц. У вас должно быть, например, user_company, связанное в обеих таблицах, так что вы можете делать соответствующие объединения каждый раз, когда вы вызываете запрос. –

ответ

1

Попробуйте это:

SELECT * FROM Cases 
WHERE case_user IN 
(SELECT user_id FROM Users WHERE user_company=(
    SELECT user_company FROM Users WHERE user_id=27) 
) 
+0

Спасибо, что отлично работает, мне также нужно вернуть отправителей email_address, так что user_id 27 для case_id 1 и 2 мне нужен user_email = example-email-a. Ах так сложно. Еще раз спасибо – TSUK

+0

SELECT * FROM cases JOIN users ON users.user_id = cases.case_user WHERE case_user IN (SELECT user_id FROM Users WHERE user_company = (SELECT user_company FROM Users WHERE user_id = 27)) – TSUK

0

попробовать это. он не возвращает case_id 1 и 2 для user_id 27, но для user_id 25 он вернуть case_id 1 и 2

SELECT * FROM `Users` 
LEFT JOIN `Cases` ON `Users`.`user_id`=`Cases`.`case_user` 
WHERE `Users`.`user_id`=25 
+1

Как вы думаете, он вернется для user_id = 27, case_id = 1 и в следующую строку case_id = 2, я думаю, это покажет NULL –

0

Это для Teh данных у показал, как, например, выход.

SELECT S1.USER_ID, C.CASE_ID 
FROM USERS S1 
JOIN USERS S2 
ON S1.USER_ID <> S2.USER_ID 
AND S1.USER_COMPANY = S2.USER_COMPANY 
JOIN CASES C 
ON S2.USER_ID = C.CASE_USER 
Смежные вопросы