450,13 → 450,17 |
$clausesWhere = array(); |
foreach ($tags as $tag) { |
$tagMotif = $this->bdd->proteger("%$tag%"); |
// WARNING : la sous-requête est la meilleure solution trouvée pour contrer le fonctionnement |
// étrange de l'optimiseur de MYSQL 5.6 (à retester avec Mysql 5.7 et suivant). |
$sousRequete = 'SELECT DISTINCT ce_observation '. |
'FROM del_image '. |
"WHERE mots_cles_texte LIKE $tagMotif ". |
'AND ce_observation IS NOT NULL'; |
$sql = " (do.mots_cles_texte LIKE $tagMotif OR do.id_observation IN ($sousRequete)) "; |
if ($this->etreAppliImg()) { |
$sql = " (do.mots_cles_texte LIKE $tagMotif OR di.mots_cles_texte LIKE $tagMotif) "; |
} else { |
// WARNING : la sous-requête est la meilleure solution trouvée pour contrer le fonctionnement |
// étrange de l'optimiseur de MYSQL 5.6 (à retester avec Mysql 5.7 et suivant). |
$sousRequete = 'SELECT DISTINCT ce_observation '. |
'FROM del_image '. |
"WHERE mots_cles_texte LIKE $tagMotif ". |
'AND ce_observation IS NOT NULL'; |
$sql = " (do.mots_cles_texte LIKE $tagMotif OR do.id_observation IN ($sousRequete)) "; |
} |
$clausesWhere[] = $sql; |
} |
$whereTags = implode(' AND ', $clausesWhere); |
471,9 → 475,6 |
if ($this->etreAppliImg()) { |
$this->addJoin('LEFT JOIN del_observation AS do ON (di.ce_observation = do.id_observation) '); |
} |
if ($this->etreAppliObs()) { |
$this->addJoin('LEFT JOIN del_image AS di ON (do.id_observation = di.ce_observation) '); |
} |
} |
} |
|