如何在MySQL查询中合并列值?我现在正在使用WordPress一段时间,我想从价格中对数据进行排序,但每个帖子都有不同的类型价格(每月和每年)。价格存储在wp_postmeta
中。这是我到目前为止所尝试过的。
$mam_global_fields = "
, price.meta_value AS villa_price,
CASE currency.meta_value
WHEN 'IDR' THEN price.meta_value * ". $currency_rate['IDR'] ." / 12
WHEN 'USD' THEN price.meta_value * ". $currency_rate['USD'] ." / 12
WHEN 'EUR' THEN price.meta_value * ". $currency_rate['EUR'] ." / 12
WHEN 'AUD' THEN price.meta_value * ". $currency_rate['AUD'] ." / 12
END AS price_in_usd,
CASE currency_monthly.meta_value
WHEN 'IDR' THEN price_monthly.meta_value * ". $currency_rate['IDR'] ."
WHEN 'USD' THEN price_monthly.meta_value * ". $currency_rate['USD'] ."
WHEN 'EUR' THEN price_monthly.meta_value * ". $currency_rate['EUR'] ."
WHEN 'AUD' THEN price_monthly.meta_value * ". $currency_rate['AUD'] ."
END AS price_in_usd_monthly,
price.meta_key AS price_key,
villa_code.meta_value AS v_codes
";
我多次加入wp_postmeta
因为我想为每个帖子获取正确的数据。
$mam_global_join = "
INNER JOIN " . $wpdb->postmeta . " AS currency_monthly ON (" . $wpdb->posts . ".ID = currency_monthly.post_id AND (currency_monthly.meta_key = 'monthly_currency'))
INNER JOIN " . $wpdb->postmeta . " AS price_monthly ON (" . $wpdb->posts . ".ID = price_monthly.post_id AND (price_monthly.meta_key = 'monthly_price'))
INNER JOIN " . $wpdb->postmeta . " AS currency ON (" . $wpdb->posts . ".ID = currency.post_id AND (currency.meta_key = 'currency'))
INNER JOIN " . $wpdb->postmeta . " AS price ON (" . $wpdb->posts . ".ID = price.post_id AND (price.meta_key = 'price'))
INNER JOIN " . $wpdb->postmeta . " AS villa_code ON (" . $wpdb->posts . ".ID = villa_code.post_id AND villa_code.meta_key = 'code')
";
现在它按2列排序,但我想只有1列price_in_usd
(但它仍显示错误的别墅)
$mam_global_orderby = "price_in_usd, price_in_usd_monthly " . $sort[1];
那么如何以正确的方式做到这一点?因为我想制作一个排序程序,从价格(每年或每月)对价格进行排序,所以如果帖子有年价,那么价格将除以12.请帮忙。
我已经尝试使用COALESCE()
,但我被卡住了,这些代码是最新版本。
修改
其实我有一个想法,但不知道怎么做,我想让meta_value
达到临时价格,所以yearly
或monthly
价格会是在一栏中,我已经在google中查看但没有得到答案。
修改
我想要的是,我想将两个不同meta_key
(monthly_currency&货币)的值合并到一个我将用于排序的自定义列,所有价格都将转换为{{1在排序之前,如您所见,我的代码中有USD
。因此,在了解货币之后,它将检查价格是按月还是按年,如果是每年,那么它将除以12.因此我可以按CASE currency.meta_value
价格对其进行排序,即使是每月或年租金。我得到的问题是,我无法得到正确的结果,因为价格类型(年/月)所以该怎么做?