从WordPress MySQL user_meta表和我的自定义表中获取数据

时间:2019-02-24 16:57:13

标签: php mysql sql wordpress

我有一个自定义表格“ orders”,用于保存订单数据。

| id | user_id | product

这样,我从中获取数据。

$orders = $wpdb->get_results( 
   "
   SELECT * 
   FROM sbgf_pl_orders
   ORDER BY ID DESC
   LIMIT 500
");

foreach ( $orders as $order ){ 
  echo $order->id;
}

我想将我的请求与user_meta表链接,这样我就可以从那些个人资料具有特定交付方式(例如suer meta“ shippment_method”)的用户那里获得订单。

我尝试了这个,但是这个请求使我的网站超载

$orders = $wpdb->get_results( 
   "
   SELECT * 
   FROM sbgf_pl_orders, sbgf_user_meta
   WHERE sbgf_user_meta.shipping_method = '1' AND sbgf_user_meta.user_id=sbgf_user_meta.user_id
   ORDER BY ID DESC
   LIMIT 500
");

foreach ( $orders as $order ){ 
  echo $order->id;
}

2 个答案:

答案 0 :(得分:1)

您未正确加入表:

AND sbgf_user_meta.user_id=sbgf_user_meta.user_id

此条件将始终为真,并且您的加入将导致用户与具有运输方式1的订单之间的笛卡尔积。

此外,您应始终使用显式联接,而不要使用老式的隐式联接,例如this SO answer中所述。

最后,将查询中的表命名为别名,并为这些列添加前缀是一种很好的做法。这使查询更易于阅读和维护,并避免在列名冲突时避免歧义。

您的查询应该看起来像:

SELECT * 
FROM sbgf_pl_orders ord
INNER JOIN sbgf_user_meta usr ON usr.shipping_method = 1 AND usr.user_id = ord.user_id
ORDER BY ord.ID DESC
LIMIT 500

答案 1 :(得分:1)

@GMB谢谢您的想法。我猜想怎么做

highchart() %>%
hc_chart(type="column") %>%
hc_xAxis(type="category") %>%
hc_add_series(
    data = d,
    name = "States",
    type = "column",
    hcaes(x = State, y = Num)
  )