2012-03-28 120 views
0

运行查询的查询我有一个表,看起来像这样:在MySQL

 
+-----+--------------+---------+----------+---------------------+---------------------+ 
| id | username  | case_id | status | date_assigned  | date_removed  | 
+-----+--------------+---------+----------+---------------------+---------------------+ 
| 21 | hemcreynolds | 802  | inactive | 2007-08-20 07:15:48 | 2008-04-15 16:08:54 | 
| 133 | licox  | 868  | active | 2007-09-02 11:55:37 | 0000-00-00 00:00:00 | 
| 3 | kashepherd | 794  | inactive | 2007-08-17 13:54:39 | 2010-08-12 14:40:37 | 
| 4 | tithomas  | 795  | active | 2007-08-17 13:56:06 | 0000-00-00 00:00:00 | 
| 5 | stcosse  | 795  | inactive | 2007-08-17 13:56:26 | 2007-09-25 10:02:03 | 
| 6 | mefong yit | 914  | active | 2007-08-17 14:00:29 | 0000-00-00 00:00:00 | 
| 7 | tamouledoux | 842  | active | 2007-08-17 14:09:16 | 0000-00-00 00:00:00 | 
| 9 | chgross  | 903  | active | 2007-08-18 08:38:38 | 0000-00-00 00:00:00 | 
| 20 | ticrane  | 802  | inactive | 2007-08-20 07:15:41 | 2008-04-15 16:44:35 | 
| 19 | hemcreynolds | 818  | inactive | 2007-08-20 07:15:12 | 2008-04-15 16:08:57 | 
+-----+--------------+---------+----------+---------------------+---------------------+ 

我想运行一个查询发现该情况下,用户已经被分配给用户名,例如

​​

话,我想找到全部分配到案件的其他用户,我的用户(ticrane)被分配到:

 SELECT * FROM assignements WHERE case_id = (all of the case ids generated by the previous query)

我想这样做在一个单一的查询。我想像某种连接是为了这里,但我不认为你可以加入来自同一个表的结果。困惑。有什么建议么?

+0

去自加入 – 2012-03-28 11:17:07

回答

4

这是完全合法的参加表格本身,而是你需要给一个别名的两个“拷贝”中的至少一个表格,以便声明不含糊。

SELECT 
    assignments_join.* 
FROM 
    assignments AS assignments_base 
    JOIN assignments AS assignments_join ON 
     assignments_base.case_id = assignments_join.case_id 
WHERE 
    assignments_base.username = 'ticrane' 
+0

完美。非常感谢。 – Judson 2012-03-28 11:30:04

2

你需要一个自联接在分配表

select a.username, a.case_id 
from assignments a inner join assignments b 
on a.case_id = b.case_id 
where b.username = 'ticrane' 
1

除了从Hammerite和No'am纽曼显示解决方案,您还可以使用子查询:

SELECT * 
FROM assignements 
WHERE case_id IN (SELECT case_id from assignments WHERE username = 'ticrane')