Disons que nous avons 4 articles dans une table:
Le terme de recherche est " Jordan fort>", comment puis-je obtenir les résultats triés par ordre alphabétique mais avec la correspondance de recherche d'abord comme ceci: P> im en utilisant ce code, mais ne pas obtenir ce que je veux: p>
3 Réponses :
Essayez ceci:
| ID | FULLNAME | |----|-------------------| | 1 | Jordan John | | 2 | Michel Jordan | | 4 | Tom Jordan Robert | | 3 | Adam Mark Jordan |
A l'air super, mais comment pourrais-je l'utiliser comme requête de CodeDigniter? Et en utilisant une variable $ Search_term au lieu du mot 'Jordan' ??
@Waleedasender Je n'ai pas travaillé sur Codedigniter, désolé pour cela, vous l'avez donc fait par votre propre.
Malheureusement pour une raison quelconque, il ne fonctionne pas pour moi !! $ Query = Ceci-> DB-> Query ("Sélectionnez le nom de Membres commandez par Find_in_set ('$ mot-clé', remplacez (nom, '', ',') -> résultat () ; code>
Vous recherchez '$ keyword' code> Vous devez vous assurer que la vérification est insérée dans la requête via ceci:
recherche_in_set ('". $" ... code ". > Cela devrait fonctionner (vrai avec PHP, je ne suis pas sûr d'autres langues)
Vous pouvez essayer ceci:
$this->db ->select('id, fullName') ->from('test') ->order_by("FIND_IN_SET('Jordan', REPLACE(fullName, ' ', ',')) , fullName"); $query = $this->db->get();
Il convient à cette erreur: une erreur de base de données est survenue Numéro d'erreur: 1064 Vous avez une erreur dans votre syntaxe SQL; Vérifiez le manuel qui correspond à votre version de Server MySQL pour la syntaxe de droite à utiliser à proximité '', ' code>,
')) code> ') code " code> 'à la ligne 3
Assurez-vous que vous n'avez pas utilisé de guillemets de doubles citations entre l'ordre par clause. Aussi le nom de fichier est utilisé sans citations
Ma tentative pour vous:
$this->db->select('id, name, (SELECT name FROM users WHERE name REGEXP "^'.$search_term.'") as "regexp_match"'); $this->db->from('users'); $this->db->like('name', $search_term); $this->db->order_by('name', 'asc'); $this->db->order_by("regexp_match", "asc"); $query = $this->db->get();
Je pense que vous devriez avoir à ré-trier dans PHP après avoir reçu les résultats. Si vous aviez le nom cassé dans différents domaines, vous pouvez le faire fonctionner.
J'ai le nom complet dans une colonne.
Juste, je comprends ça. Par conséquent, vous devez obtenir les résultats, puis re-trier ces résultats.