Сейчас занимался решением интересной задачи. Потратил пару часов. Почему то не нашел готовых решений под эту тему.

Есть 2 таблицы:

1. Посты

2. Пользователи

Причем в метаполе поста, содержится не просто ИД пользователя, а ИД в сериализованном виде, типа так: a:1:{i:0;s:3:»334″;}

Попробуйте найти все посты, в которых есть пользователь с ИД = 33. И вот у вас полная каша. Нужно искать ИД только равные a:1:{i:0;s:2:»33″;}.

Тут придется делать выборку через регулярные выражения. О том как использовать REGEXP есть куча статей.

Но вот беда, у нас тут не просто нужно выбрать по какому то статическому параметру, а по значению другого поля, другой таблицы.

Тут то нам и нужна функция CONCAT, которая соединит строки и ключ другого поля.

В итоге получается LEFT JOIN вида:

LEFT JOIN wp_posts as client ON (client_id.meta_value REGEXP CONCAT('"', client.ID, '"'))