如何合并列值?

时间:2018-04-24 08:59:04

标签: mysql wordpress

如何在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达到临时价格,所以yearlymonthly价格会是在一栏中,我已经在google中查看但没有得到答案。

修改

我想要的是,我想将两个不同meta_key(monthly_currency&货币)的值合并到一个我将用于排序的自定义列,所有价格都将转换为{{1在排序之前,如您所见,我的代码中有USD。因此,在了解货币之后,它将检查价格是按月还是按年,如果是每年,那么它将除以12.因此我可以按CASE currency.meta_value价格对其进行排序,即使是每月或年租金。我得到的问题是,我无法得到正确的结果,因为价格类型(年/月)所以该怎么做?

0 个答案:

没有答案