Помогите поправить запрос

Есть таблица wp_posts, которая хранит в себе post_type и post_parent

ID post_type post_parent
1 post 0
2 post 0
3 image 1

Мне нужно сделать такой запрос, чтобы при запросе к post_type='post' я так же забирал все записи где post_parent = post.ID. Так же мне важно, чтобы каждый объект запроса содержал в себе что-то вроде ключа "attachments", где будут храниться дочерние записи. Вот что у меня получилось. Спасибо.

    SELECT p.*,
      JSON_ARRAYAGG(JSON_OBJECT(m.meta_key,m.meta_value)) AS meta
    FROM wp_posts AS p
    LEFT JOIN wp_postmeta m 
      ON (m.post_id = p.ID )
      AND (m.meta_key='_aioseop_title' OR m.meta_key='_aioseop_description')
    LEFT OUTER JOIN wp_posts p2 
      ON p2.post_parent = p.ID
    WHERE post_type = 'post'
    AND post_status = 'publish'
    GROUP BY p.ID
    LIMIT 10

Ошибка: Column 'post_type' in where clause is ambiguous


Ответы (1 шт):

Автор решения: Алексей Шиманский

После выборки у вас получается, что post_type есть как в p, так и в p2 (а может это поле есть и в wp_postmeta, не знаю) и парсер не знает, какой из них надо брать. Нужно явно указать, например p.post_type/p2.post_type/m.post_type и т.д.... Аналогично может быть с post_status

ЗЫ: ambiguous переводится как "двусмысленный". На будущее)

→ Ссылка