2012-03-28 10 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

は、自己のために行くには –

答えて

4

割り当てテーブルに参加することは、それ自体にテーブルを結合するために完全に合法ですが、の二つの「コピー」の少なくとも一つにエイリアスを与える必要があります表が不明瞭でないようにします。

あなたも副選択を使用することができHammeriteとNo'amニューマンから示さソリューションに加え
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

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

SELECT * 
FROM assignements 
WHERE case_id IN (SELECT case_id from assignments WHERE username = 'ticrane') 
関連する問題