Проблемы с запросом Oracle SQL

У меня есть две таблицы, и я хочу извлечь следующие требования:

  • Название работы.
  • Количество пользователей.

Таблицы и примеры данных:

     **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 с нулевым количеством пользователей. Я также пробовал левое соединение. Пожалуйста, помогите.

В заголовке стоит Oracle SQL, а вы отмечены mysql. Итак, какую из двух СУБД вы используете, Oracle или MySQL?

Thorsten Kettner 22.03.2019 08:47

Каковы первичные ключи таблиц? Какую роль играет empl_id? Важен ли этот столбец для запроса или его можно спокойно игнорировать?

Thorsten Kettner 22.03.2019 08:49

Сочетание (Job_id, Empl_id, User_id) = (2, 2, 3) встречается дважды в Job_Applied. Вы хотите, чтобы этот пользователь учитывался дважды для задания соответственно или только один раз?

Thorsten Kettner 22.03.2019 08:52

Я отрицаю запрос. Как показывают мои вопросы выше, он неполный, и ОП не ответил ни на один из вопросов. Это делает запрос бесполезным для любого другого читателя, кроме самого ОП.

Thorsten Kettner 22.03.2019 10:01
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
4
36
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам просто нужно сгруппировать по 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.

Jahanzeb Awan 22.03.2019 08:50

@JahanzebAwan пожалуйста, тогда вам нужно использовать левое соединение. Потому что jobs_applied находится справа. Если бы это было на левой стороне, вам нужно было бы использовать правое соединение.

Barbaros Özhan 22.03.2019 08:52

использовать левое соединение

 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

Другие вопросы по теме