Intereting Posts
Есть ли способ выяснить, какое действие / фильтр вызвало функцию? Форматирование пользовательской даты метаданных с ГГГГ / ММ / ДД на более читаемую альтернативу Ограничение пользовательского типа сообщений по роли пользователя Пользовательский «метаконференц-переключатель» не сохраняется правильно Эпоха промежуточных сайтов: имеет ли смысл развиваться на местном уровне? ! is_admin () становится истинным в страницах администратора Несколько пользовательских типов сообщений на странице индекса с настраиваемыми шаблонами Открыть пост редактора во всплывающем окне Сколько запросов WordPress SQL на страницу? Внедрение глобального перенаправления (автоматическое перенаправление для всех страниц, у которых была изменена их пуля) Измените имя класса на «current_ancestor» в wp_nav_menu Как скрыть ссылку «сообщение» из панели администратора вставить данные из формы :: Предупреждение Пустой запрос mysqli :: query () получить текущий идентификатор сообщения внутри крючка Как получить количество товаров по категориям в WooComerce

пользовательский мета-запрос

Я пытаюсь заставить этот запрос работать, но он не может возвращать строки

SELECT a.ID FROM wp_users a, wp_usermeta b WHERE b.user_id=a.ID AND ( (b.meta_key='firstname-groom' AND b.meta_value LIKE 'Darren') OR (b.meta_key='firstname-bride' AND b.meta_value LIKE 'Someone') OR (b.meta_key='lastname-bride' AND b.meta_value LIKE 'Cool') ) AND (b.meta_key='weddingdate' AND b.meta_value='12/14/2014') GROUP BY a.ID 

Запрос возвращает строки, если я удалю эту часть AND (b.meta_key='weddingdate' AND b.meta_value='12/14/2014') но мне нужно, чтобы она работала с этим требованием (weddingdate = 12/14 / 2014)

Solutions Collecting From Web of "пользовательский мета-запрос"

На самом деле я понял это сейчас, используя join

 SELECT a.ID FROM wp_users a INNER JOIN wp_usermeta b ON b.user_id = a.ID AND ( ( b.meta_key = 'firstname-groom' AND b.meta_value LIKE 'Darren' ) OR ( b.meta_key = 'firstname-bride' AND b.meta_value LIKE 'Someone' ) OR ( b.meta_key = 'lastname-bride' AND b.meta_value LIKE 'Cool' ) ) INNER JOIN wp_usermeta c ON c.user_id = a.ID AND ( c.meta_key = 'weddingdate' AND c.meta_value = '12/14/2014' ) GROUP BY a.ID 

SQL не вызывает ошибку, поэтому у вас нет данных в вашей базе данных, соответствующих всем критериям. Как написано, вам понадобится один или несколько из них:

 (b.meta_key='firstname-groom' AND b.meta_value LIKE 'Darren') OR (b.meta_key='firstname-bride' AND b.meta_value LIKE 'Someone') OR (b.meta_key='lastname-bride' AND b.meta_value LIKE 'Cool') 

И это:

 AND (b.meta_key='weddingdate' AND b.meta_value='12/14/2014') 

Чтобы соответствовать этому, чтобы возвращать результаты. Однако, если вы внимательно посмотрите, это условие никогда не произойдет, потому что это потребует, чтобы b.meta_key как b.meta_key , так и одним из b.meta_key , b.meta_key firstname-bride , lastname-bride в одно и то же время, чего никогда не произойдет. Вам нужно будет JOIN к таблицам несколько раз один раз для имен и один раз для даты. (Похоже, вы уже работали над этим в комментарии, поэтому я не буду писать SQL .)

Я бы сделал еще один комментарий.

  1. Сохранение даты, например, 12/14/2014 – это плохая идея. Существует очень мало рациональной сортировки, которую вы можете сделать с этим форматом даты, и извлечение данных месяца, дня или года не будет особенно эффективным или надежным, поскольку ни одна из функций даты в MySQL будет работать.

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

 SELECT m1.`user_id` as `ID`, m1.p1, m2.p2, m3.p3, m4.p4 FROM (SELECT `user_id`, `meta_value` as p1 FROM `wp_usermeta` WHERE (`meta_key` = 'firstname-groom' AND `meta_value` LIKE 'Darren') GROUP BY `user_id`) m1, (SELECT `user_id`, `meta_value` as p2 FROM `wp_usermeta` WHERE (`meta_key` = 'firstname-bride' AND `meta_value` LIKE 'Someone') GROUP BY `user_id`) m2, (SELECT `user_id`, `meta_value` as p3 FROM `wp_usermeta` WHERE (`meta_key` = 'lastname-bride' AND `meta_value` LIKE 'Cool') GROUP BY `user_id`) m3, (SELECT `user_id`, `meta_value` as p4 FROM `wp_usermeta` WHERE (`meta_key` = 'weddingdate' AND `meta_value` = '12/14/2014' ) GROUP BY `user_id`) m4 WHERE m1.`user_id` = m2.`user_id` AND m1.`user_id` = m3.`user_id` AND m1.`user_id` = m4.`user_id` 

При необходимости, когда она была готова, генерируя такие запросы. Функция возвращает массив идентификаторов пользователей