2011-01-14 5 views
0

私は2テーブル、人と仕事を持っていると言う。サブテーブルの条件でnullを返す

+--------+--------------+------+-----+---------+----------------+ 
| Field | Type   | Null | Key | Default | Extra   | 
+--------+--------------+------+-----+---------+----------------+ 
| id  | int(11)  | NO | PRI | NULL | auto_increment | 
| name | varchar(255) | NO |  | NULL |    | 
| job_id | int(11)  | NO |  | NULL |    | 
+--------+--------------+------+-----+---------+----------------+ 

+----------+--------------+------+-----+---------+----------------+ 
| Field | Type   | Null | Key | Default | Extra   | 
+----------+--------------+------+-----+---------+----------------+ 
| j_id  | int(11)  | NO | PRI | NULL | auto_increment | 
| j_name | varchar(255) | NO |  | NULL |    | 
| j_active | tinyint(1) | NO |  | 0  |    | 
+----------+--------------+------+-----+---------+----------------+ 

それだけj_active = 1とそうでない場合は、0またはNULLを返すjob_idを返します。ここで、iは、選択をどのように行うのでしょうか?だから、私は自分の仕事がアクティブでないときには、常にすべての人けどを返したいと思う私は、case文が動作するはず

+0

すべての人は常に有効な 'job_id'を持っていますか? – Quassnoi

+0

いいえ、IDを持つものもあれば、そうでないものもあります – robjmills

答えて

3
select * from person p left join job j on p.job_id=j.j_id and j.j_active=1 
0

そのジョブIDを返すようにしたいいけません。何かのように:

select name, case when j_active=1 then job_id else null end as job_id 
from person join job on (person.job_id=job.j_id) 
関連する問題