Вернуть ноль при условии в под-таблице - PullRequest
0 голосов
/ 14 января 2011

Скажем, у меня есть 2 стола, человек и работа.

+--------+--------------+------+-----+---------+----------------+
| 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       |                |
+----------+--------------+------+-----+---------+----------------+

Как мне сделать выборку, когда он возвращает только job_id, где j_active = 1, а в противном случае возвращает 0 или NULL? Итак, я бы хотел всегда возвращать всех людей , но когда их работа не активна, я не хочу возвращать их идентификатор работы

Ответы [ 2 ]

3 голосов
/ 14 января 2011
select * from person p left join job j on p.job_id=j.j_id and j.j_active=1
0 голосов
/ 14 января 2011

Ситуация должна работать. Что-то вроде:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...