У меня 3 таблицы:
Когда я получаю свой запрос из wp_posts
я использую LEFT JOIN
для получения данных из wp_metadata
, но как я могу получить значение от пользователей 3-й таблицы?
Пример:
У меня есть одна запись в блоге WordPress. На этом посту у меня есть некоторые мета-поля – один из них называется userid
. Мои пользователи находятся в таблице вне WordPress. Как я могу получить имя пользователя пользователя из users
таблицы, где userid
users
после мета-ключа равен идентификатору строки -tables users?
Вот мой SQL-запрос, как сейчас:
$result = query(" SELECT ID, post_title, post_excerpt, post_content, m.meta_value AS placeid, i.meta_value AS photoid, r.meta_value AS rating, u.meta_value AS userid, b.username FROM wp_posts p LEFT JOIN wp_postmeta m ON (m.post_id = p.ID) LEFT JOIN wp_postmeta i ON (i.post_id = p.ID) LEFT JOIN wp_postmeta r ON (r.post_id = p.ID) JOIN wp_postmeta u ON (u.post_id = p.ID) LEFT JOIN brugere b ON (b.id = userid) WHERE m.meta_key = 'placeid' AND i.meta_key = 'photoid' AND r.meta_key = 'rating' AND u.meta_key = 'userid' AND post_status = 'publish' ORDER BY ID DESC LIMIT 50 ");
Я хочу один запрос, потому что я использую запрос на print json_encode
.
Я упростил ваш запрос, но разве что-то подобное не выполнит?
SELECT * FROM $wpdb->posts AS p LEFT JOIN $wpdb->postmeta AS pm ON p.ID = pm.post_id LEFT JOIN users AS u ON pm.meta_value = u.user_id WHERE pm.meta_key = 'user_id' AND post_status = 'publish' ORDER BY p.ID DESC LIMIT 50;