您如何使用数据库元键和值?

时间:2019-03-28 09:49:19

标签: sql wordpress woocommerce

我正在尝试使用SQL检索Woocommerce订单项的元键和值,以便可以在自己的报告中汇总信息,但是我确实在努力将元键和值提取为列。谁能提供任何SQL示例?有可以用于元数据的Wordpress API吗?

我尝试创建以下SQL作为扩展查询产品信息的基础。它返回正确的数据类型,但仅返回一行:

SELECT O.order_item_id, O.order_item_name,
    MAX(IF(OIM.meta_key = 'class', OIM.meta_value, NULL)) AS class
FROM wp_woocommerce_order_items AS O
LEFT JOIN wp_woocommerce_order_itemmeta AS OIM on O.order_item_id = 
OIM.order_item_id
WHERE O.order_item_name='Smiths Night School';

谢谢

2 个答案:

答案 0 :(得分:3)

我很高兴你明白了!这是学习事物的最好方法。为了帮助您,我将向您介绍在WordPress(PHP)中执行此操作的正确方法:

<?php

//DB
global $wpdb; 

//Get results from the database
$results = $wpdb->get_results( "SELECT O.order_item_id, O.order_item_name, MAX(CASE WHEN OIM.meta_key = 'class' THEN OIM.meta_value END) AS 'class', MAX(CASE WHEN OIM.meta_key = 'fee-type' THEN OIM.meta_value END) AS 'fees' FROM wp_woocommerce_order_items O INNER JOIN wp_woocommerce_order_itemmeta OIM ON O.order_item_id = OIM.order_item_id WHERE O.order_item_name='Smiths Night School' GROUP BY O.order_item_id, O.order_item_name" );

foreach ( $results as $result ) {
    echo $result->your_field_from_the_table;
}

WordPress定义了一个名为wpdb的类,该类包含用于与数据库进行交互的一组函数。这是使用此类的好方法,因为它既简单又节省。

您也不需要在任何PHP文件中定义数据库的passworduser(如果使用PHP数据库功能,则需要执行的操作)。如果您使用wpdb,则此信息会直接从wp-config.php文件中获取,这会更加安全。

答案 1 :(得分:1)

以下代码运行良好。该查询返回“史密斯夜校”的每个order_item_name的类别和费用类型信息。

SELECT 
  O.order_item_id, O.order_item_name,
  MAX(CASE WHEN OIM.meta_key = 'class' THEN OIM.meta_value END) AS 'class',
  MAX(CASE WHEN OIM.meta_key = 'fee-type' THEN OIM.meta_value END) AS 'fees'
FROM wp_woocommerce_order_items O
INNER JOIN wp_woocommerce_order_itemmeta OIM ON O.order_item_id = OIM.order_item_id
WHERE O.order_item_name='Smiths Night School'
GROUP BY O.order_item_id, O.order_item_name