使用PHP基于公共meta_key从MySQL元表中选择多个元值

时间:2017-08-08 20:45:04

标签: php mysql

元数据表(例如wp_postmeta)有许多不同的键和值,每个键都包含在不同的行中,但每个键都与相同的帖子ID相关联。

我想为每个post_id创建一个单独的数组,该数组包含使用查询的关联数组中的每个meta_values和meta_keys。

我尝试了什么

$orderdetails = $wpdb->get_results("
SELECT meta1.post_id
     , meta1.meta_value AS Company
     , meta2.meta_value AS Volunteers
     , meta3.meta_value AS Date
     , meta4.meta_value AS City
     , meta5.meta_value AS Created
  FROM wp2_postmeta meta1
     , wp2_postmeta meta2
     , wp2_postmeta meta3
     , wp2_postmeta meta4
     , wp2_postmeta meta5
 WHERE meta1.meta_key LIKE '_billing_company'
   AND meta1.meta_value = '$order_company'
   AND meta2.meta_key LIKE 'additional_volunteers'
   AND meta2.post_id = meta1.post_id
   AND meta3.meta_key LIKE '_paid_date'
   AND meta3.post_id = meta1.post_id
   AND meta4.meta_key LIKE '_billing_city'
   AND meta4.post_id = meta1.post_id
   AND meta5.meta_key LIKE '_created_via'
   AND meta5.post_id = meta1.post_id
", OBJECT_K);

为什么我要改进这个

上面的查询确实有效,但看起来不够优雅,因为它很长并且为每个meta_value分别引用相同的表。关于如何改进它的任何想法都非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用pivot语法在没有所有连接的情况下执行此操作。

<br>