У меня есть две таблицы, и я хочу извлечь следующие требования:
Таблицы и примеры данных:
**Job_Applied** **Jobs_posted**
Job_id Empl_id User_id | Job_id Empl_id Job_Title
------------------------ --------------------------
1 2 3 | 1 2 Android
1 2 4 | 2 2 Web
1 2 5 | 3 4 Java
2 2 3 |
2 2 3 |
2 2 7 |
3 2 5 |
Я пытался:
Select count(User_id) as Users , Job_Title
from Jobs_posted
inner join Jobs_Applied on Jobs_posted.job_id = Jobs_Applied.job_id.
Я получаю количество пользователей, подавших заявку на работу. Как я могу получить job_title с нулевым количеством пользователей. Я также пробовал левое соединение. Пожалуйста, помогите.
Каковы первичные ключи таблиц? Какую роль играет empl_id
? Важен ли этот столбец для запроса или его можно спокойно игнорировать?
Сочетание (Job_id, Empl_id, User_id) = (2, 2, 3)
встречается дважды в Job_Applied
. Вы хотите, чтобы этот пользователь учитывался дважды для задания соответственно или только один раз?
Я отрицаю запрос. Как показывают мои вопросы выше, он неполный, и ОП не ответил ни на один из вопросов. Это делает запрос бесполезным для любого другого читателя, кроме самого ОП.
Вам просто нужно сгруппировать по Job_Title
Select count(distinct User_id) as Users , p.Job_Title
from Jobs_posted p
left join Jobs_Applied a
on p.job_id = a.job_id and p.Empl_id = a.Empl_id
group by p.Job_Title
Спасибо. Но если таблица jobs_applied пуста, я хочу показать job_title с номером пользователя = 0.
@JahanzebAwan пожалуйста, тогда вам нужно использовать левое соединение. Потому что jobs_applied находится справа. Если бы это было на левой стороне, вам нужно было бы использовать правое соединение.
использовать левое соединение
Select count(a.User_id) as Users , p.Job_Title
from Jobs_posted p
left join Jobs_Applied a
on p.job_id = a.job_id and p.Empl_id=a.Empl_id
group by p.Job_Title
В заголовке стоит
Oracle SQL
, а вы отмеченыmysql
. Итак, какую из двух СУБД вы используете, Oracle или MySQL?