Подтвердить что ты не робот

Необходимо получить данные о продуктах из базы данных 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.. Но мне также нужно получить цену этого продукта.

4b9b3361

Ответ 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'
        ";