2013-04-12 60 views
0

請幫助任何人!MySQL加入損失

我想例如,user_id 27返回case_id 1和2,因爲具有相同公司的另一個user_id創建了這些情況。

用戶ID 27是一個例子,因爲表格非常大,所以我需要一個通用的SQL語句。

CodeIgniter Active Query會非常有幫助,但可能過於複雜?

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

嘗試。它不爲USER_ID 27但 返回CASE_ID 1和2的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數據u顯示作爲示例輸出。

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