Вернуть ноль при условии в под-таблице

0

Скажем, у меня есть 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? Итак, я бы хотел, чтобы всегда возвращал всех лиц, но когда их работа неактивна, я не хочу возвращать свой идентификатор работы

  • 0
    У всех людей всегда есть действительный job_id ?
  • 0
    нет, у некоторых будет удостоверение личности, а у некоторых нет
Теги:
database

2 ответа

3
Лучший ответ
select * from person p left join job j on p.job_id=j.j_id and j.j_active=1
0

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

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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню