我有一个自定义表格“ 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;
}
答案 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)
)