Difficile à dire de votre question, mais je devine votre tableau de clients ressemblera à quelque chose comme:
id fName lName deleted
---------------------------------
1 John Doe N
2 Bill Clinton N
3 Fred Smith N
4 George Bush Y
Votre requête, comme vous l'avez dit dans votre question, ne fonctionnera jamais, comme ressemblera à ceci:
SELECT *
FROM customer
WHERE fname LIKE '%Bill Clinton%' AND deleted = 'N'
OR
lName LIKE '%Bill Clinton%' AND deleted = 'N'
Il n'y a pas enregistrements dans la table où les champs FNAME OU lName contiennent « Bill Clinton »
Vous devrez masser votre texte # # attributes.q de façon cela va générer quelque chose comme ceci:
SELECT *
FROM customer
WHERE ((fName LIKE '%Bill%') OR (fName LIKE '%Clinton%')) AND deleted = 'N'
OR
((lName LIKE '%Bill%') etc.....
Les comparaisons LIKE ressemblent beaucoup à l'utilisation de caractères génériques dans les noms de fichiers. Ils ne diviseront pas un bloc de texte pour vous, mais vous diront si un morceau de texte existe, mot pour mot, dans un autre morceau de texte.
Je pense que ce dont vous avez besoin est un FULLTEXT search, qui considérera les mots individuels dans une chaîne de requête et retournera les résultats. Bien sûr, FULLTEXT n'est disponible que sur les types de tables MyISAM, donc si vous utilisez InnoDB ou un autre type, vous n'avez pas de chance.
Je n'arrive pas à comprendre ce que vous cherchez. Fname = 'prénom' et lname = 'nom de famille'? Votre exemple de requête, l '«explication» ci-dessous et la question à la fin ne semblent pas appartenir ensemble. Pouvez-vous s'il vous plaît réduire à SQL seulement et reformuler la question! – lexu
Je ne connais pas la notation "# attributes.q #", mais vous semblez fournir la même valeur pour les correspondances fName et lName. – Martin