@AndreyBLG

Выбрать строки с отсутствующим полем (значением NULL)?

Приветствую, уважаемые!
Подскажите пожалуйста как выбрать из таблицы строки, у которых не задано поле?
Например таблица 'wp_postmeta':
post_id # meta_key # meta_value
111 # name # "product-1"
111 # type # "box-hard"
111 # price # 20
222 # name # "product-2"
222 # type # "box-soft"
222 # price # 25
333 # name # "product-3"
333 # price # 30


Здесь нужно выбрать продукт с id = 333, у него в таблице нет атрибута "type".
База wordpress, mysql, запросы пишу в phpMyAdmin, никак не получается выбрать нужное, как обратится к значению, которого нет, чтобы его зафильтровать?
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
Bavashi
@Bavashi
select * from wp_postmeta where post_id not in (select post_id from wp_postmeta where meta_key = "type");
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker
Программист, энтузиаст
Пишу на "ощупь", поскольку бд под рукой нет, но будет как-то так:
SELECT
    keys.name, t.meta_value
FROM
    (
        SELECT DISTINCT meta_key AS name
        FROM wp_postmeta
    ) AS keys
    LEFT JOIN wp_postmeta AS t ON t.meta_key = keys.name AND t.post_id = :id
Ответ написан
Ваш ответ на вопрос

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

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