ИЛИ сочетание с LIKE в сочетании с имитацией полного внешнего соединения выводит нежелательные результаты - PullRequest
0 голосов
/ 26 февраля 2019

Я знаю, что не существует полного внешнего JOIN для MySQL, поэтому я должен использовать разные методы для достижения такого типа симуляции, поэтому я нашел этот метод, который работает для меня, поэтому этот метод работает постоянно, но по какой-то причине это не такработая, когда я использую ИЛИ как LIKE с этим.Я в основном создал поисковую систему для сайта моделирования, которая позволяет искать конкретную модель по имени или по фамилии, но я замечаю, когда делаю что-то подобное

WHERE models.first_name LIKE '%Jeda%' OR models.last_name LIKE '%Lee%' AND portfolio.profile_picture='yes' AND portfolio.status='yes' 

Это дает мне этотакой результат

Example 1

Но на самом деле он должен давать мне только такой результат

Example 2

Так почему же я получаю дополнительные результаты, относящиеся к той же модели, когда я ищу по их имени или по фамилии?Я подумал, что, основываясь на profile_picture yes и status yes, он даст мне только один результат, который я ожидал показать только на красной границе.Почему я не получаю результаты, основываясь на profile_picture yes и статусе yes?Я просто чувствую, как этот запрос структурирован, это в основном игнорирование profile_picture yes и status yes, так как я могу получить результат, который я ищу?Я просто хочу, чтобы отображалась только красная рамка.

И это мой полный пример запроса

SELECT 

/*****<models section>*****/

models.id AS primary_id,
/**/

/*<targeted columns>*/
models.uid,
models.photo,
models.first_name,
models.last_name,
models.signature_name,
/*</targeted columns>*/

/*****</models section>*****/

/*****<portfolio section>*****/

/*<targeted columns>*/
portfolio.id,
portfolio.uid,
portfolio.type_of_media,
portfolio.path,
portfolio.profile_picture,
portfolio.status
/*</targeted columns>*/

/*****</portfolio section>*****/

/*****<models & portfolio section>*****/
FROM models LEFT JOIN portfolio 

/*<both tables are matched by this identical value>*/
ON models.uid = portfolio.uid
/*</both tables are matched by this identical value>*/

WHERE models.first_name LIKE '%Jeda%' OR models.last_name LIKE '%Lee%' AND portfolio.profile_picture='yes' AND portfolio.status='yes'
/*****</models & portfolio section>*****/

UNION 

SELECT

/*****<models section>*****/

/*<targeted columns>*/
models.id,
models.uid,models.photo,
models.first_name,
models.last_name,
models.signature_name,
/*</targeted columns>*/

/*****</models section>*****/

/*****<portfolio section>*****/

/*<targeted columns>*/
portfolio.id,
portfolio.uid,
portfolio.type_of_media,
portfolio.path,
portfolio.profile_picture,
portfolio.status
/*</targeted columns>*/

/*****</portfolio section>*****/

/*****<models & portfolio section>*****/
FROM models RIGHT JOIN portfolio 

/*<both tables are matched by this identical value>*/
ON models.uid = portfolio.uid
/*</both tables are matched by this identical value>*/

WHERE models.first_name LIKE '%Jeda%' OR models.last_name LIKE '%Lee%' AND portfolio.profile_picture='yes' AND portfolio.status='yes'

/*<using ORDER BY with the combined table generated 
primary key column with DESC direction as well>*/
ORDER BY primary_id DESC
/**/

/*****</models & portfolio section>*****/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...