Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1912 → Rev 1913

/branches/v1.5-carbone/services/bibliotheque/Sql.php
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) ');
}
}
}