Mysql join не показывает все записи - PullRequest
0 голосов
/ 09 октября 2019

Я использую Php с объединением, у меня есть две таблицы ("services" и "service_detail"), я хочу получить все сервисы, но хочу знать, какой сервис выбран или не выбран поставщиком

Вот мойтаблица служб services

id          service_name        image
1           Abc                 abc.jpg
2           xyz                 xyz.jpg
3           OPS                 ops.jpg
4           tys                 tys.jpg
5           byp                 byp.jpg

Вот моя таблица services_detail strcutre

id          vendor_id       service_id      price
1           101             1               50
2           101             2               70
3           101             3               80
4           101             4               30
5           102             1               70
6           102             2               40
...

Я пытался выполнить следующий запрос, но показывать только выбранные службы, но я хочу получить все службы с параметром (выбран илине выбрано) Где я не прав? Вот мой запрос

SELECT sd.vendor_id, sd.service_id, sd.price, s.service_name, s.image
FROM services_detail sd
LEFT JOIN services s
ON sd.service_id = s.id
WHERE sd.vendor_id = '101'

1 Ответ

2 голосов
/ 09 октября 2019

Переместите условие where на AND в ON предложение:

AND sd.vendor_id = '101'

И поменяйте местами таблицы в соединении сполучить все сервитуты

SELECT sd.vendor_id, sd.service_id, sd.price, s.service_name, s.image, 
IF (sd.vendor_id is not null, 'Opted', 'Not opted') as status
FROM services s
LEFT JOIN services_detail sd
ON sd.service_id = s.id AND sd.vendor_id = '101';

Проще говоря, если в таблице есть предложение where, включающее фильтры в таблице Left Join, то оно будет действовать как INNER JOIN, а не LEFT JOIN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...