Необходимо получить данные о продуктах из базы данных mysql
У меня возник вопрос. Я попытаюсь описать свою ситуацию:
Я получил установку wordpress, в которой я установил codeigniter. Все это хорошо, и я также получил доступ к базе данных. Теперь у меня есть плагин для Wordpress, называемый Woocommerce. С помощью этого плагина вы можете хранить продукты и данные продукта в своей базе данных. Теперь мне нужно получить доступ к данным из моих продуктов woocommerce в приложении codeigniter.
Woocommerce хранит свои продукты следующим образом:
Все продукты входят в таблицу: wp_posts
В этой таблице указан столбец: post_type
Woocommerce идентифицирует сообщения как продукты, когда post_type установлен в продукт [duh!].
Теперь есть другая таблица wp_postmeta.
В этой таблице все данные продукта хранятся в 4 столбцах:
1. meta_id [идентификатор метауры]
2. post_id [идентифицирует себя в таблице wp_posts]
3. meta_key [там будут несколько клавиш: sale_price, акции, дополнительные_цены и т.д.]
4. meta_value [для каждого ключа есть значение.]
В таблице wp_postmeta мне нужно отсортировать все meta_keys с их значениями, если продукт получил meta_key = '_ rentable' и meta_value = 'yes'.
Поэтому, если это так, мне нужно получить все другие мета-ключи и значения, где post_id совпадает с арендованным продуктом.
Надеюсь, я никого не смутил... На данный момент я получил этот запрос:
$sql = "SELECT p.id, p.post_title, p.guid, p.post_type, m.meta_key, m.meta_value
FROM wp_posts p
INNER JOIN wp_postmeta m
WHERE p.id=m.post_id
AND m.meta_key='_rentable' AND m.meta_value='yes'
";
Это возвращает meta_key: _rentable и значение: yes.. Но мне также нужно получить цену этого продукта.
Ответы
Ответ 1
Похоже, вы пытаетесь получить несколько фрагментов данных из разных строк в одной таблице, а это значит, что вам нужно сделать несколько соединений.
Получает ли это то, что вы ищете?
$sql = "SELECT p.id, p.post_title, p.guid, p.post_type, m.meta_key, m.meta_value, meta_sp.meta_value as sale_price, meta_ap.meta_value as additional_price
FROM wp_posts p
INNER JOIN wp_postmeta m
INNER JOIN wp_postmeta meta_sp ON p.id=meta_sp.post_id
AND meta_sp.meta_key='sale_price'
INNER JOIN wp_postmeta meta_ap ON p.id=meta_ap.post_id
AND meta_ap.meta_key='additional_price'
WHERE p.id=m.post_id
AND m.meta_key='_rentable' AND m.meta_value='yes'
";