Я хочу знать, возможно ли это сделать только с одним запросом.
Вы видите, у меня есть эта таблица user_leads , и мне нужно объединить эту таблицу с двумя таблицами: lead_forms AND user_services в столбцах formid и serviceid соответственно.
Результат этого запроса должен возвращать ТОЛЬКО строки, которые соответствуют в user_services ИЛИ lead_forms. НЕ возвращает строки без совпадения хотя бы на одном из этих двух.
Из-за природы этих двух столбцов могут быть установлены оба, и иногда один будет установлен, а другой NULL. И часто не будет совпадений ни с одной из двух таблиц.
Так что проблема в том, что если я сделаю внутреннее объединение, подобное этому
FROM `user_leads`
INNER JOIN lead_forms ON lead_forms.formid = user_leads.formid
, но затем сделаю
INNER JOIN user_services ON user_services.serviceid = user_leads.serviceid
возвращает все совпадения с lead_forms и игнорирует некоторые совпадения с user_services , когда должно возвращать их оба. Если я сделаю следующее, хотя
FROM `user_leads`
WHERE user_leads.formid > 0 OR user_leads.serviceid > 0
LEFT OUTER JOIN user_services ON user_leads.serviceid = user_services.serviceid
LEFT OUTER JOIN lead_forms ON user_leads.serviceid = lead_forms.formid
Он возвращает все совпадения из двух таблиц точно так же, как я хотел, но, поскольку это LEFT OUTER JOIN, он также возвращает строки из user_leads , которые имеют нет совпадений в user_services или lead_forms , что приводит к ошибкам.
Я не хочу проверять совпадения, если на самом деле нет другого способа сделать это с MYSQL. Поэтому, если вы знаете правильный способ сделать это, ваша помощь приветствуется.
РЕДАКТИРОВАТЬ: Для справки https://www.db-fiddle.com/f/pvjnJSAb913EX5Qc7c2QWo/1
Это то, что сработало https://www.db-fiddle.com/f/5tgwy9AgBHx2dcqt9NoThN/2