• Как запустить pdo из функции?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    function send_error($pdo, $serror) {
        $sql = 'INSERT INTO fssp (error) VALUES (:error)';
        $query = $pdo -> prepare($sql);
        $query -> execute(['error' => $serror]);
    }
    Ответ написан
    2 комментария
  • Как сделать горизонтальный параллакс для текстового блока при скроллинге страницы?

    hzzzzl
    @hzzzzl
    как-то так, только через css еще подкрутить позицию текста, ну или начать двигать текст не сразу когда section появляется на экране

    Ответ написан
    3 комментария
  • Как составить MySQL запрос для начисления процента?

    @MaximaXXl
    Вы уж извините, но то что Вы написали в запросе ... это даже приблизительно не то что Вы хотели получить на словах.
    Да и на словах как то все поплыло "Вывести всех клиентов, у которых есть 5 пар клиентов" - кто на ком стоял?

    Если в 2 словах по запросу, у Вас 2 LEFT JOIN, оба не нужны.
    У Вас нет вообще связки между двумя экземплярами orders, да и не надо там 2 раза.
    Ну в целом .... работает долго и непонятно, будет данных больше, будет работать днями ...

    P.S. после долгих уточнений подходящий ответ такой, для MySQL 8+
    select af_id, sum(coalesce(amount_value,0))*0.1 sum_pair_10
    from (
            select 
            arur.af_id,
            arur.r_w_uid,
            lag(arur.r_w_uid,1,-1) over (partition by arur.af_id order by arur.r_w_uid) r_w_uid_1
            ,row_number() OVER (partition by arur.af_id order by arur.r_w_uid ) mod 2 pair_flag
            
            from arur, u_af 
            where u_af.id = arur.af_id ) t1  left join orders o on (o.uid in (t1.r_w_uid,t1.r_w_uid_1) and o.status = 'Completed')
    where pair_flag = 0
    group by af_id
    having count(distinct r_w_uid) >  5

    Для более младших версий
    select af_id, sum(coalesce(amount_value,0))*0.1 sum_pair_10
    from (SELECT arur.af_id,
           arur.r_w_uid, 
           @row_num :=  CASE WHEN @row_num_val = af_id                THEN @row_num+1
                             WHEN (@row_num_val := af_id) IS NOT NULL THEN 1
                        END   pair_flag,
           @lag_r_w_uid :=  CASE WHEN (@row_num_val = af_id) and @row_num mod 2 = 1 THEN r_w_uid
                                 else @lag_r_w_uid
                            END r_w_uid_1     
    
    FROM arur, u_af, (SELECT @row_num := null, @row_num_val := null, @lag_r_w_uid := null) AS x
    where u_af.id = arur.af_id 
    ORDER BY af_id, r_w_uid        ) t1  left join orders o on (o.uid in (t1.r_w_uid,t1.r_w_uid_1) and o.status = 'Completed')
    where pair_flag mod 2 = 0
    group by af_id
    having count(distinct r_w_uid) >  5
    Ответ написан
    3 комментария