Количество SQL-запросов, равное 0

#sql #postgresql

Вопрос:

Предположим, что у меня есть 3 таблицы,

 student(user_id, occupation) thumbsup(user_id, post_id) post(post_id, user_id)  

Мне нужно подсчитать количество хороших постов, которые есть у одного студента. Условия таковы

 a post can receive multiple thumbs up but once it receives at least one thumbup it is a goodpost goodposts are how many posts that one user posted that received thumbsup  

Например, если идентификатор пользователя 1 публикует 3 сообщения с идентификаторами post_id, 3,4,5, 6 и post_id 3 получает 2 больших пальца вверх, а идентификатор post_id 4 получает 5 больших пальцев вверх, а идентификатор post_id 5 получает 10 больших пальцев вверх, 6 получает 0 больших пальцев вверх, это означает, что идентификатор пользователя 1 имеет 3 хороших сообщения, потому что у 6 в этом случае нет больших пальцев вверх

Я могу успешно спроецировать это, сделав это. Но есть одно дополнительное требование:

 if a student does not have any good posts, their number of good posts should be zero.  

Это мое текущее решение, которое проецирует студентов, если у них есть хорошие посты

 (SELECT temp2.user_id, S.occupation, goodpost FROM  (SELECT P.user_id, COUNT (P.user_id) as goodpost FROM (SELECT T.post_id, Count(*) AS likes FROM swoosh.thumbsup T group by T.post_id) As TEMP, swoosh.post P WHERE P.post_id = temp.post_id GROUP BY P.user_id) temp2, swoosh.Student S WHERE temp2.user_id = S.user_id)   

Но мне нужно спроецировать те идентификаторы пользователей, которые тоже не получают большие пальцы в этой таблице. Каков же этот подход

Комментарии:

1. Сделайте левое соединение, чтобы собрать всех студентов и использовать EXISTS для определения хороших должностей. Затем сгруппируйтесь и посчитайте.

2. Можете ли вы показать мне синтаксис, я пытался это сделать, но это не работает

3. Я получил это, используя полное соединение и совместное использование, но я, к сожалению, не знаю, как это работает

4. Ну, это то, чему тебя пытается научить твой класс. Спросите своего учителя.