Ежедневная и ежемесячная дата в одной функции в sql - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь выбирать данные ежемесячно и ежедневно. Я пробовал, как ...

для ежедневного

function participantsDaily()
{
    
    global $wpdb;
    $businesses   = $wpdb->prefix.'businesses';
    $usersTable = $wpdb->base_prefix . "users";
    $userMetaTable = $wpdb->base_prefix . "usermeta";
    $employeeTable = $wpdb->prefix.'employees';
    $userAmount = $wpdb->prefix.'business_payments';

    return $wpdb->get_results($wpdb->prepare("SELECT b.name, bu.first_name, bu2.last_name, ut.user_email, emp.created_at, bu4.amount, bu3.coupon_code, bu5.cancel, bu7.refund, bu6.refernce, emp.user_id from $employeeTable emp, $businesses b, $usersTable ut
        LEFT JOIN (Select um.user_id, um.meta_value as first_name From $userMetaTable um where meta_key='first_name') bu ON (ut.ID = bu.user_id)
        LEFT JOIN (Select um2.user_id, um2.meta_value as last_name From $userMetaTable um2 where um2.meta_key='last_name') bu2 ON (ut.ID = bu2.user_id)
        LEFT JOIN (Select um3.user_id, um3.meta_value as coupon_code From $userMetaTable um3 where um3.meta_key='coupon_code') bu3 ON (ut.ID = bu3.user_id)
        LEFT JOIN (Select ua.user_id, ua.amount  From $userAmount ua ) bu4 ON (ut.ID = bu4.user_id)
        LEFT JOIN (Select um4.user_id, um4.meta_value as cancel From $userMetaTable um4 where um4.meta_key='cancel') bu5 ON (ut.ID = bu5.user_id)
        LEFT JOIN (Select um5.user_id, um5.meta_value as refernce From $userMetaTable um5 where um5.meta_key='refernce') bu6 ON (ut.ID = bu6.user_id)
        LEFT JOIN (Select um6.user_id, um6.meta_value as refund From $userMetaTable um6 where um6.meta_key='refund') bu7 ON (ut.ID = bu7.user_id)
        
        WHERE  DATE(created_at) = CURDATE() AND b.id = emp.business_id AND ut.id= emp.user_id AND b.is_active=1 " , $dateCondString));
    /*WHERE  DATE(created_at) = CURDATE() AND b.id = emp.business_id AND ut.id= emp.user_id AND b.is_active=1 " , 0));*/
} //end participantsDaily()

и для ежемесячного

// Access Daily Participants Details
function participantsMonthly() {
    global $wpdb;
    $businesses   = $wpdb->prefix.'businesses';
    $usersTable = $wpdb->base_prefix . "users";
    $userMetaTable = $wpdb->base_prefix . "usermeta";
    $employeeTable = $wpdb->prefix.'employees';
    $userAmount = $wpdb->prefix.'business_payments';

    return $wpdb->get_results($wpdb->prepare("SELECT b.name, bu.first_name, bu2.last_name, ut.user_email, emp.created_at, bu4.amount, bu3.coupon_code, bu5.cancel, bu7.refund, bu6.refernce, emp.user_id from $employeeTable emp, $businesses b, $usersTable ut
        LEFT JOIN (Select um.user_id, um.meta_value as first_name From $userMetaTable um where meta_key='first_name') bu ON (ut.ID = bu.user_id)
        LEFT JOIN (Select um2.user_id, um2.meta_value as last_name From $userMetaTable um2 where um2.meta_key='last_name') bu2 ON (ut.ID = bu2.user_id)
        LEFT JOIN (Select um3.user_id, um3.meta_value as coupon_code From $userMetaTable um3 where um3.meta_key='coupon_code') bu3 ON (ut.ID = bu3.user_id)
        LEFT JOIN (Select ua.user_id, ua.amount  From $userAmount ua ) bu4 ON (ut.ID = bu4.user_id)
        LEFT JOIN (Select um4.user_id, um4.meta_value as cancel From $userMetaTable um4 where um4.meta_key='cancel') bu5 ON (ut.ID = bu5.user_id)
        LEFT JOIN (Select um5.user_id, um5.meta_value as refernce From $userMetaTable um5 where um5.meta_key='refernce') bu6 ON (ut.ID = bu6.user_id)
        LEFT JOIN (Select um6.user_id, um6.meta_value as refund From $userMetaTable um6 where um6.meta_key='refund') bu7 ON (ut.ID = bu7.user_id)
        WHERE  DATE(created_at) > DATE_SUB(NOW(), INTERVAL 1 MONTH) AND b.id = emp.business_id AND ut.id= emp.user_id AND b.is_active=1 " , 0));
} //end participantsMonthly()

Эти два кода функции такие же, за исключением даты дня и месяца. Я пробовал вот так

if($monthly) {
            $dateCondString = 'DATE(created_at) > DATE_SUB(NOW(), INTERVAL 1 MONTH)';
        } else {
            $dateCondString = 'DATE(created_at) = CURDATE()';
        }

, когда я выбираю ежедневно, он будет показывать ежедневные данные, а при выборе лунного месяца он будет отображать ежемесячные данные. Моя проблема в том, что я пишу две функции, и максимальный код такой же, но мы можем писать в одной функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...