Recherche dans plusieurs tables avec une sous-requête
Question
Ce que je dois faire, c'est effectuer une recherche dans la liste des sociétés et des balises et répertorier les sociétés.
La structure de ma table est la suivante;
balises(tag_ID, tag) tag_relation (tag_ID, company_ID) sociétés (ID_entreprise, nom_entreprise, description_entreprise)
La requête doit pouvoir rechercher à la fois les informations sur la société (nom, description) et les balises. Si une balise est recherchée, les sociétés liées doivent revenir.
La solution
En supposant que vous souhaitiez exécuter "comme" " recherches vous pouvez utiliser le code ci-dessous. Si vous avez des tables très volumineuses, les performances risquent d’être médiocres, car les caractères génériques empêcheront l’utilisation des index.
select companies.company_id, companies.company_name, companies.company_description
from companies
inner join tag_relation
on companies.company_id = tag_relation.company_id
inner join tags
on tags.tag_id = tag_relation.tag_id
where companies.company_name like '%something%'
or companies.company_description like '%something%'
or tag.tag like '%something%'
group by companies.company_id, companies.company_name, companies.company_description
order by companies.company_name