Имея 3 таблицы:
1) название: компании, поля: company_id, company_name;
2) имя: контакты, поля: contact_id, имя_контакта;
3) имя: соединения, поля: connection_id, contact_id, company_id;
Я делаю многократный поиск. Например, я хочу найти компании, называемые «qwer», и контакты, называемые «abc». Поэтому мой запрос будет:
$query="SELECT * FROM COMPANIES WHERE company_name RLIKE (qwer)"
Следующий шаг я сделаю массивным с идентификатором этих компаний. Следующий запрос будет выглядеть следующим образом:
$query="SELECT * FROM connections WHERE company_id in (my massive)"
Создание массива contact_id из этого выбора, а затем внесение последнего запроса:
$query="SELECT * FROM contacts WHERE contact_name RLIKE(abc) and id in(my massive)"
Итак, можно ли сделать все эти действия в одном запросе или использовать меньше действий, чем я использовал?
Например, мне нужно найти все компании, называемые «oogle», с контактами типа «i». В результате мне нужно получить одну компанию «Google» с двумя контактами: Джоном Смитом и Дженни Смит.
@Iqbal помогает много, но у меня есть еще одна таблица, называемая адресами с двумя полями: id и street. А в компаниях таблиц есть еще одно поле, называемое address_id. Поэтому я попытался получить всю информацию с таким вопросом:
select con.connection_id, com.company_name, ctx.contact_name from addresses as add, connections as con left join companies as com on con.company_id = com.company_id left join contacts as ctx on con.contact_id = ctx.contact_id where add.id=com.Legal_address
Но это не сработает, допустим ошибку: «У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с 'add, Connections as con LEFT JOIN Companies as com on con.company_id = com.id LE 'в строке 1 "
Вы можете использовать левое соединение.
Если вы хотите открыть connection_id, имя_компании и имя контакта
select con.connection_id, com.company_name, ctx.contact_name, add.street from connections as con left join companies as com on con.company_id = com.company_id left join contacts as ctx on con.contact_id = ctx.contact_id left join addresses as add on con.addresses_id = add.addresses_id
Привет, вы можете использовать что-то вроде этого
select connections.connection_id, contacts.contact_id companies.companyid from connections left join companies on connections.company_id = companies.company_id left join contacts on contacts.contact_id = connections.contact_id where company_name LIKE ('%qwer%') and contact_name LIKE('%abc%')