Вам нужно использовать полнотекстовый поиск (FTS) - есть встроенная функциональность MySQL для FTS, которую можно использовать только для таблиц MyISAM, и сторонние FTS, такие как Sphinx, на выбор.Вот интерактивное слайд-шоу, представляющее приличное введение и инструкции .
При использовании MySQL FTS ваш запрос будет выглядеть следующим образом:
SELECT *
FROM A AS a
JOIN B AS b ON b.id = a.b_id
WHERE MATCH (a.f1, a.f2, b.f3) AGAINST ('foo bar');
Динамический SQL все еще возможен, в зависимостио том, насколько сильно вы хотите / нужно сделать запрос.Я хотел бы изучить предложения FTS, прежде чем рассматривать динамический SQL ...