Mysql выбор операторов на основе разных условий - PullRequest
0 голосов
/ 08 апреля 2020

Я сейчас пишу трекер проектов, с помощью которого можно создавать проекты. Как только проект создан, он автоматически публикуется c. Однако вы можете отредактировать проект, и мой node js бэкэнд установит флаг "is_private" в 1 = true. Теперь у меня также есть различные запросы, где, например, будет введен поисковый термин. Если текущий пользователь является автором проекта, это должно быть показано в режиме реального времени поиска ajax, но не для всех остальных.

в псевдокоде, что означает

if (mysql.table.project.is_private === 1 && 
    mysql.table.project.person_id ===  req.session.person.personId) {
    showProjectsOnlyForProjectAuthor ()
} else if (is_private === 0) {
    showAllProjects ()
}

Как это можно сделать переводить как mysql запрос? Я думаю, что мне нужно сделать два разных запроса на основе двух условий

Это мой текущий запрос, который показывает все публичные c проекты

SELECT * 
FROM project_tracker_dev.project 
WHERE (project.is_private = 0) 
  AND (title LIKE "%searchTerm%" OR description LIKE "%searchTerm%") ;

1 Ответ

0 голосов
/ 08 апреля 2020
SELECT * 
FROM project_tracker_dev.project 
WHERE 
(
      is_private = 0 OR
     (is_private = 1 AND person_id = $personId)
)
AND (title LIKE "%project%" OR description LIKE "%project%") ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...