Запрос с именем, ценой, обычной ценой, SKU и категориями - Woocommerce - PullRequest
1 голос
/ 20 февраля 2020

У меня есть этот запрос, чтобы показать имя, цену, обычную цену и SKU:

SELECT post.post_title, metaSku.meta_value AS sku, metaPrice.meta_value AS price, metaPriceRegular.meta_value AS priceregular
            FROM wp_posts AS post
            LEFT JOIN ( SELECT * FROM wp_postmeta WHERE meta_key = '_sku' ) AS metaSku ON post.ID = metaSku.post_id
            LEFT JOIN ( SELECT * FROM wp_postmeta WHERE meta_key = '_price' ) AS metaPrice ON post.ID = metaPrice.post_id
            LEFT JOIN ( SELECT * FROM wp_postmeta WHERE meta_key = '_regular_price' ) AS metaPriceRegular ON post.ID = metaPriceRegular.post_id
            WHERE post.post_type = 'product

Мне нужно добавить еще одну вещь - категории столбцов для моих продуктов. Пример: товар "Футболка с Lo go" https://www.screenpresso.com/=4kh0b (таблица "wp_posts") находится в категориях "Футболки", "Аксессуары", "Одежда" - https://www.screenpresso.com/=9Ce4b (таблица "wp_terms").

Существует соединение: https://www.screenpresso.com/=rDHfd (таблица "wp_term_relationships")

Не могли бы вы помочь мне с этим предмет? Самым большим препятствием для меня является то, что товар можно отнести ко многим категориям. Мои запросы заморозили сервер 2 раза.

1 Ответ

1 голос
/ 20 февраля 2020

Я думаю, вы могли бы объединить все категории в одном столбце, используя функцию MySql Group_Concat. Вы также можете немного упростить ваш текущий SQL:

SELECT post.post_title, metaSku.meta_value AS sku, metaPrice.meta_value AS price, metaPriceRegular.meta_value AS priceregular, terms.categories
FROM wp_posts AS post
LEFT JOIN wp_postmeta AS metaSku ON post.ID = metaSku.post_id AND metaSku.meta_key = '_sku'
LEFT JOIN wp_postmeta AS metaPrice ON post.ID = metaPrice.post_id AND metaPrice.meta_key = '_price'
LEFT JOIN wp_postmeta AS metaPriceRegular ON post.ID = metaPriceRegular.post_id AND metaPriceRegular.meta_key = '_regular_price'
LEFT JOIN (
    SELECT wtr.object_id, GROUP_CONCAT(wp_terms.name ORDER BY wp_terms.term_order ASC SEPARATOR ', ') AS categories
    FROM wp_term_relationships wtr join wp_terms on wtr.term_taxonomy_id = wp_terms.term_id
    GROUP BY wtr.object_id
) terms on post.ID = terms.object_id
WHERE post.post_type = 'product'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...