2010-12-01 7 views
0

Mon problème est assez simple - du moins j'espère que c'est le cas. J'essaye de joindre deux tables dans MySQL et d'exécuter une instruction WHERE sur un champ concaténé pour produire un résultat. Voici l'exemple de requête:MySQL CONCAT dans WHERE Statement (Multi Tables)

SELECT a.name, b.company, concat_ws(' ', a.company, b.name) as whole_name 
FROM users as a 
INNER JOIN company as b on a.company_id = b.company_id 
HAVING whole_name LIKE '%IBM John%' 
LIMIT 25 

Cette requête semble toujours être tirée de la colonne de nom et ne retournera aucun résultat. J'ai essayé ceci en faisant:

SELECT a.name, b.company, concat_ws(' ', a.company, b.name) as whole_name 
FROM users as a 
INNER JOIN company as b on a.company_id = b.company_id 
WHERE concat_ws(' ', a.company, b.name) LIKE '%IBM John%' 
LIMIT 25 

Et il ne donne toujours aucun résultat. Les données sont absolument dans le tableau. La société pour John est IBM Computer Systems. Le champ whole_name renvoie 'IBM Computer Systems John Smith' mais une requête sur '%IBM John%' ne renvoie rien.

Une aide?

Merci, Greg

Répondre

1

Besoin d'un% entre IBM et John ... il cherche "IBM John" quelque part dans le texte ... pas IBM puis John quelque part plus loin ..

+0

Donc, pour chaque terme de recherche, vous devez le décomposer et ajouter un symbole '%'? Comme '% IBM%% John%'? – gregavola

+0

% est un caractère générique, vous pouvez faire '% IBM% John%' et ça va le faire, si vous voulez faire valoir qu'ils sont en mots séparés, alors '% IBM%% John%' cherche IBM, puis un espace quelque part après, et puis John quelque part après ça. '% IBM% John%' correspond également si "IBMJohn" (c'est-à-dire manque d'espace) se trouve dans le texte. – Ben