Try to use better sql to display result for dir search, issue #0001191, issue #0001129, issue #0000249

This commit is contained in:
Michael RICOIS 2012-06-10 17:38:53 +00:00
parent 0abfe6cc15
commit 806b754105

View File

@ -703,8 +703,9 @@ function reponse(&$resSphinx, &$resDB, $criteres, $time, $formR, $form2crit,
} }
$pertinence_generale *= $num / $tot; $pertinence_generale *= $num / $tot;
$pertinence_generale = intval($pertinence_generale); $pertinence_generale = intval($pertinence_generale);
print 'Pertinence generale: '.$pertinence_generale.'<br/>'; //print 'Pertinence generale: '.$pertinence_generale.'<br/>';
} }
$decalage = false; $decalage = false;
for ($i = 0, $k = 0; $k < $resDB->num_rows || $decalage == true; ++$i) { for ($i = 0, $k = 0; $k < $resDB->num_rows || $decalage == true; ++$i) {
if ($decalage == false) { if ($decalage == false) {
@ -713,67 +714,43 @@ function reponse(&$resSphinx, &$resDB, $criteres, $time, $formR, $form2crit,
} else { } else {
$decalage = false; $decalage = false;
} }
if ($formR['type']=='dir') {
debugln($ligneDir[$i]['id'].' '.$ligne['id']); $ret['reponses'][$i]['id'] = $ligne['id'];
$pertinence = $pertinence_generale;
if ($formR['type'] == 'ent') {
if (empty($formR['raisonSociale']) == false) {
$pertinence *= compare($formR['raisonSociale'], $ligne['raisonSociale']);
}
if (empty($formR['voie']) == false) {
$pertinence *= compare($formR['voie'], $ligne['adr_typeVoie'].' '.$ligne['adr_libVoie']);
}
if (empty($formR['ville']) == false) {
$pertinence *= compare($formR['ville'], $ligne['adr_ville']);
}
} }
if ($formR['type']=='dir' && $ligneDir[$i]['id']!=$ligne['id']) { $ret['reponses'][$i]['Pertinence'] = $pertinence;
for ($j = $i - 1; $j >= 0; --$j) { $ret['reponses'][$i]['Siret'] = $ligne['siret'];
if ($ret['reponses'][$j]['id'] == $ligneDir[$i]['id']) { $ret['reponses'][$i]['Siren'] = $ligne['siren'];
$ret['reponses'][$i] = $ret['reponses'][$j]; $ret['reponses'][$i]['Nic'] = $ligne['nic'];
$decalage = true; $ret['reponses'][$i]['Siege'] = $ligne['siege'];
break; $ret['reponses'][$i]['Nom'] = $ligne['raisonSociale'];
} $ret['reponses'][$i]['Nom2'] = '';
} $ret['reponses'][$i]['Sigle'] = $ligne['sigle'];
if ($decalage != true) { $ret['reponses'][$i]['Enseigne'] = $ligne['enseigne'];
debugln('erreur '.$ligneDir[$i]['id'].' != '.$ligne['id']); $ret['reponses'][$i]['Adresse'] =
}
} else {
$ret['reponses'][$i]['id'] = $ligne['id'];
//if ($formR['type'] == 'dir') {
// debugln("$i:$ligne[id]");
//}
$pertinence = $pertinence_generale;
if ($formR['type'] == 'ent') {
if (empty($formR['raisonSociale']) == false) {
$pertinence *= compare($formR['raisonSociale'],
$ligne['raisonSociale']);
}
if (empty($formR['voie']) == false) {
$pertinence *= compare($formR['voie'],
$ligne['adr_typeVoie'].' '.
$ligne['adr_libVoie']);
}
if (empty($formR['ville']) == false) {
$pertinence *= compare($formR['ville'],
$ligne['adr_ville']);
}
}
$ret['reponses'][$i]['Pertinence'] = $pertinence;
$ret['reponses'][$i]['Siret'] = $ligne['siret'];
$ret['reponses'][$i]['Siren'] = $ligne['siren'];
$ret['reponses'][$i]['Nic'] = $ligne['nic'];
$ret['reponses'][$i]['Siege'] = $ligne['siege'];
$ret['reponses'][$i]['Nom'] = $ligne['raisonSociale'];
$ret['reponses'][$i]['Nom2'] = '';
$ret['reponses'][$i]['Sigle'] = $ligne['sigle'];
$ret['reponses'][$i]['Enseigne'] = $ligne['enseigne'];
$ret['reponses'][$i]['Adresse'] =
$ligne['adr_num'].' '. $ligne['adr_num'].' '.
$ligne['adr_typeVoie'].' '. $ligne['adr_typeVoie'].' '.
$ligne['adr_libVoie']; $ligne['adr_libVoie'];
$ret['reponses'][$i]['Adresse2'] = $ligne['adr_comp']; $ret['reponses'][$i]['Adresse2'] = $ligne['adr_comp'];
$ret['reponses'][$i]['CP'] = $ligne['adr_cp']; $ret['reponses'][$i]['CP'] = $ligne['adr_cp'];
$ret['reponses'][$i]['Ville'] = $ligne['adr_ville']; $ret['reponses'][$i]['Ville'] = $ligne['adr_ville'];
$ret['reponses'][$i]['Tel'] = $ligne['tel']; $ret['reponses'][$i]['Tel'] = $ligne['tel'];
$ret['reponses'][$i]['Fax'] = $ligne['fax']; $ret['reponses'][$i]['Fax'] = $ligne['fax'];
$ret['reponses'][$i]['FJ'] = $ligne['cj']; $ret['reponses'][$i]['FJ'] = $ligne['cj'];
//$ret['reponses'][$i]['FJLib'] = ; $ret['reponses'][$i]['Actif'] = $ligne['actif'];
$ret['reponses'][$i]['Actif'] = $ligne['actif']; $ret['reponses'][$i]['NafEtab'] = $ligne['ape_etab'];
$ret['reponses'][$i]['NafEtab'] = $ligne['ape_etab']; $ret['reponses'][$i]['NafEnt'] = $ligne['ape_entrep'];
//$ret['reponses'][$i]['NafEtabLib'] = ;
$ret['reponses'][$i]['NafEnt'] = $ligne['ape_entrep'];
//$ret['reponses'][$i]['NafEntLib'] = ;
}
if ($formR['type']=='dir') { if ($formR['type']=='dir') {
// Dirigeant // Dirigeant
$ret['reponses'][$i]['DirRs'] = ''; $ret['reponses'][$i]['DirRs'] = '';
@ -952,19 +929,19 @@ function rechercheDir(&$formR, $deb, $nbRep, $max)
} }
$requeteDB = $requeteDB =
'select e.id, d.nom, d.prenom, d.naissance_nom, d.naissance_date, d.naissance_lieu, l.libelle AS fonction_lib '. "SELECT e.id, d.nom, d.prenom, d.naissance_nom, d.naissance_date, d.naissance_lieu, l.libelle AS fonction_lib".
' from dirigeants d, etablissements e, bodacc_fonctions l'. " FROM dirigeants d, etablissements e, bodacc_fonctions l".
' where d.siren=e.siren and d.fonction_code=l.codeFct AND e.siege=1 and (d.id='. " WHERE d.fonction_code=l.codeFct AND d.id IN (".$resSphinx['matches'][0]['id'];
$resSphinx['matches'][0]['id'];
for ($i = 1; $i + $deb < $resSphinx['total'] && $i < $nbRep; ++$i) { for ($i = 1; $i + $deb < $resSphinx['total'] && $i < $nbRep; ++$i) {
$requeteDB .= ' or d.id='.$resSphinx['matches'][$i]['id']; $requeteDB .= ",".$resSphinx['matches'][$i]['id'];
} }
$requeteDB .= ')'; $requeteDB .= ") AND e.id = (";
$requeteDB .= ' GROUP BY d.siren, d.id'; $requeteDB .= "SELECT tmp.id FROM etablissements tmp ";
$requeteDB .= ' ORDER BY e.actif DESC, e.siege DESC, e.id ASC'; $requeteDB .= "WHERE tmp.siren=d.siren ORDER by tmp.actif DESC, tmp.siege DESC LIMIT 1";
$requeteDB .= ")";
debugln(); debugln();
debugln("requeteDB='$requeteDB'"); debugln("requeteDB='$requeteDB'");
//file_put_contents('test.log', $requeteDB);
$resDB = $gDatabaseJO->query($requeteDB); $resDB = $gDatabaseJO->query($requeteDB);
// Reponse // Reponse
@ -974,7 +951,7 @@ function rechercheDir(&$formR, $deb, $nbRep, $max)
$requeteDB = 'select id, CONCAT(siren,nic) AS siret, siren, nic, siege, '. $requeteDB = 'select id, CONCAT(siren,nic) AS siret, siren, nic, siege, '.
'raisonSociale, sigle, enseigne, adr_num, adr_typeVoie, adr_libVoie, '. 'raisonSociale, sigle, enseigne, adr_num, adr_typeVoie, adr_libVoie, '.
'adr_comp, adr_cp, adr_ville, tel, fax, cj, actif, ape_etab, '. 'adr_comp, adr_cp, adr_ville, tel, fax, cj, actif, ape_etab, '.
'ape_entrep from etablissements where id='.$ligne['id']; 'ape_entrep from etablissements where id IN ('.$ligne['id'];
$ligneDir[0] = array( $ligneDir[0] = array(
'id' => $ligne['id'], 'id' => $ligne['id'],
@ -987,7 +964,7 @@ function rechercheDir(&$formR, $deb, $nbRep, $max)
); );
for ($i = 1; $i < $resDB->num_rows; ++$i) { for ($i = 1; $i < $resDB->num_rows; ++$i) {
$ligne = $resDB->fetch_assoc(); $ligne = $resDB->fetch_assoc();
$requeteDB .= ' or id='.$ligne['id']; $requeteDB .= ','.$ligne['id'];
$nom = $ligne['nom']; $nom = $ligne['nom'];
if ( $ligne['naissance_nom']!='' ) { if ( $ligne['naissance_nom']!='' ) {
@ -1003,7 +980,7 @@ function rechercheDir(&$formR, $deb, $nbRep, $max)
'naissance_lieu'=> $ligne['naissance_lieu'] 'naissance_lieu'=> $ligne['naissance_lieu']
); );
} }
$requeteDB .= ' ORDER BY actif DESC, siege DESC, id ASC'; $requeteDB .= ') ORDER BY actif DESC, siege DESC';
debugln(); debugln();
debugln("requeteDB='$requeteDB'"); debugln("requeteDB='$requeteDB'");
$resDB = $gDatabaseJO->query($requeteDB); $resDB = $gDatabaseJO->query($requeteDB);
@ -1487,8 +1464,7 @@ function rechercheEnt(&$formR, $deb, $nbRep, $max, $sirenValide = false)
for ($i = 1; $i + $deb < $resSphinx['total'] && $i < $nbRep; ++$i) { for ($i = 1; $i + $deb < $resSphinx['total'] && $i < $nbRep; ++$i) {
$requeteDB .= ' or id='.$resSphinx['matches'][$i]['id']; $requeteDB .= ' or id='.$resSphinx['matches'][$i]['id'];
} }
$requeteDB .= $requeteDB .= ' ORDER BY sirenValide DESC, actif DESC, siege DESC, rang DESC';
' ORDER BY sirenValide DESC, actif DESC, siege DESC, rang DESC';
debugln(); debugln();
debugln("requeteDB='$requeteDB'"); debugln("requeteDB='$requeteDB'");