Использование count в запросе с левым соединением - PullRequest
0 голосов
/ 16 февраля 2020

В настоящее время я пытаюсь подсчитать, сколько неприязни и лайка пользователи дали изображению на моем веб-сайте, ниже вы увидите настройку базы данных, которую я сделал именно для этого. В типе Vote_type содержится информация о том, что нравится и что не нравится, где 1 равно значению «нравится», а 0 - нелюбовь.

эта таблица называется проектами Таблица проектов

named projects_votes Vote table

Теперь я хочу включить это, когда делаю запрос на перетаскивание информации из моей базы данных для записи в блоге. В настоящее время я делаю запрос, чтобы получить необходимую информацию для отображения списка блогов на главной странице. Здесь я получаю загрузчик, идентификатор проекта для ссылок и т. Д.

    $query = "  
SELECT * FROM projects
LEFT JOIN users
ON fk_usr_id = usr_id
LEFT JOIN projects_maps
ON fk_project_id = project_id    
ORDER BY RAND()
";

Так что мне трудно понять, как считать мои лайки и антипатии в конкретном блоге c, поэтому я может отображать эту информацию на моем сайте.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2020

Я решил свою проблему, изменив свой запрос на это утверждение здесь.

$query = "  
    SELECT project_id, usr_publicname, project_name, photofile_name, map_version, usr_publicname, map_date, project_id AS project, (SELECT COUNT(*) FROM projects_votes WHERE vote_type = 1) AS likes, 
    (SELECT COUNT(*) FROM projects_votes WHERE vote_type = 0) AS dislikes FROM projects 

    LEFT JOIN projects_votes ON fk_project_id = project_id 

    LEFT JOIN users ON projects.fk_usr_id = usr_id 
    LEFT JOIN projects_maps ON projects_maps.fk_project_id = projects.project_id
    LEFT JOIN photos ON photos.fk_project_id = projects.project_id

    GROUP BY project_id ORDER BY RAND()
";
0 голосов
/ 16 февраля 2020

может как то так?

SELECT project_id,
       sum(case when vote_type = 1 then 1 else 0 end) likeCount,
       sum(case when vote_type = 0 then 1 else 0 end) dislikeCount
FROM projects
LEFT JOIN users ON fk_usr_id = usr_id
LEFT JOIN projects_maps ON fk_project_id = project_id   
GROUP BY  project_id
...