#1054 - Unknown column 'X' in 'on clause' - MySQL
Формулировка задачи:
Объясните пожалуйста, как правильно сделать последний джоин?
#1054 - Unknown column 'logo_id' in 'on clause'
SELECT
posts.id,
posts.post_name AS link,
posts.post_title AS title,
m1.meta_value AS logo_id,
m2.meta_value AS cashback,
posts1.guid AS logo
FROM $wpdb->posts AS posts
JOIN $wpdb->postmeta AS m1 ON posts.id=m1.post_id AND m1.meta_key = 'merchant_logo'
LEFT JOIN $wpdb->postmeta AS m2 ON posts.id=m2.post_id AND m2.meta_key = 'merchant_cashback'
LEFT JOIN $wpdb->posts AS posts1 ON posts1.id=logo_id
WHERE `post_type`='merchants'Решение задачи: «#1054 - Unknown column 'X' in 'on clause'»
textual
Листинг программы
SELECT posts.id, posts.post_name AS link, posts.post_title AS title, m1.meta_value AS logo_id, m2.meta_value AS cashback, posts1.guid AS logo FROM $wpdb->posts AS posts JOIN $wpdb->postmeta AS m1 ON posts.id=m1.post_id AND m1.meta_key = 'merchant_logo' LEFT JOIN $wpdb->postmeta AS m2 ON posts.id=m2.post_id AND m2.meta_key = 'merchant_cashback' LEFT JOIN $wpdb->posts AS posts1 ON posts1.id=m1.meta_value
Объяснение кода листинга программы
- Создание запроса на выборку данных из нескольких таблиц
- Указание таблицы, с которой начинается объединение (ON clause)
- Объединение таблиц по полю post_id и meta_key
- Использование LEFT JOIN для объединения по нескольким полям
- Указание полей, которые будут выведены в результате запроса
- Использование псевдонима (после ключевого слова AS) для удобства работы с данными
- Предполагается, что в таблице $wpdb->posts есть поля id, post_name, post_title, guid
- Предполагается, что в таблице $wpdb->postmeta есть поля post_id, meta_key, meta_value
- Предполагается, что поле meta_value в таблице $wpdb->postmeta содержит уникальные значения id постов
- Предполагается, что поле meta_value в таблице $wpdb->posts содержит id постов
- В запросе используются псевдонимы m1, m2, posts1 для удобства работы с данными
- В запросе используется ключевое слово ON для указания условий объединения таблиц
- В запросе используется ключевое слово LEFT JOIN для объединения по нескольким полям
- В запросе используются псевдонимы для удобства работы с данными
- В запросе используется ключевое слово AS для создания псевдонима
- В запросе используются псевдонимы для удобства работы с данными
- В запросе используются псевдонимы для удобства работы с данными
- В запросе используются псевдонимы для удобства работы с данными
- В запросе используются псевдонимы для удобства работы с данными
- В запросе используются псевдонимы для удобства работы с данными