@av_tyschenko

Как построить запрос sql для двух таблиц и 3х параметров?

Друзья, доброго времени суток. Подскажите пожалуйста, строю запрос:
SELECT $wpdb->posts.ID
FROM $wpdb->posts, $wpdb->postmeta
WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id
AND $wpdb->posts.post_type = 'orders'
AND (($wpdb->postmeta.meta_key = 'status_payment') AND ($wpdb->postmeta.meta_value = 'payd'))
AND $wpdb->postmeta.meta_key = 'items'
AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'
LIMIT 0 , 5


В словах:
Стандартные таблицы WordPress. Таблица wp_posts и wp_postmeta.
Нам нужно получить из wp_posts данные ID
Сначала проверяю на совпадение по ID posts и postmeta
Следом проверяю на нужный тип поста
а дальше самое интересное, когда я проверяю мета данные на соответствие status_payment = payd

Запрос срабатывает отлично, но как только я добавляю еще одно сравнение AND $wpdb->postmeta.meta_key = 'items'

Запрос становится нулевой, как с этим бороться, что делают не так?
  • Вопрос задан
  • 243 просмотра
Решения вопроса 1
@nozzy
Symfony, Laravel, SQL
select 
t1.ID
from wp_posts t1
inner join
(
  select 
  post_id
  from wp_postmeta
  where meta_key = 'status_payment' and meta_value = 'payd' 
) t2 on t2.post_id = t1.ID 
inner join 
(
  select 
  post_id
  from wp_postmeta
  where meta_key = 'items'
) t3 on t3.post_id = t2.post_id
where t1.post_type = 'orders'
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы