Всем здравствуйте. Сайт на Wordpress. Есть 4 таблицы в БД Mysql которые надо как-то связать. orders со столбцами uid, lid, amount_value, status, create_date users со столбцом id referrals со столбцами affiliate_id, amount, status affiliates со столбцами id, uid Значения orders.uid, users.id и affiliates.uid совпадают. Например: 14, 14 и 14 Значения referrals.affiliate_id и affiliates.id совпадают. Например: 12 и 12 Таблица affiliates содержит в себе значения и 14 и 12 (возможно это как-то поможет в связке этих таблиц/столбцов). Все эти значения относятся к одному пользователю. Сейчас написан такой код (код хоть и кривой, но свою функцию выполняет. Всё выводит и считает в личном кабинете для каждого пользователя) В нём используются только первые две таблицы: Спойлер: Код Код (Text): <?php require_once 'connection.php'; $link = mysqli_connect($host, $user, $password, $database); if (!$link) { echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error(); exit; } global $wpdb; $cur_user = wp_get_current_user()->user_login; $cur_id = get_current_user_id(); $now = time(); $sql = mysqli_query($link, "SELECT " . $wpdb->base_prefix . "ihc_orders.create_date, " . $wpdb->base_prefix . "ihc_orders.uid, " . $wpdb->base_prefix . "ihc_orders.status , " . $wpdb->base_prefix . "ihc_orders.amount_value, " . $wpdb->base_prefix . "ihc_orders.lid, " . $wpdb->base_prefix . "users.id FROM " . $wpdb->base_prefix . "ihc_orders, " . $wpdb->base_prefix . "users WHERE " . $wpdb->base_prefix . "ihc_orders.uid=" . $wpdb->base_prefix . "users.id AND status= 'Completed'"); while ($result = mysqli_fetch_array($sql)) { $start=($result['create_date']); $user_uid=($result['uid']); $user_id=($result['id']); $stat=($result['status']); $reg_lid=($result['lid']); $amount=($result['amount_value']); $datediff = date('d.m.Y') - date("d.m.Y", strtotime($result['create_date'])); if ($user_uid==$cur_id&&($reg_lid['lid']==1)) { /* Начисляем процент для lid=1*/ $proc = 25; //Процентов за всё время $proc_d =0.25*$datediff; //Процентов в день $proc = $amount/100*$proc; // высчитываем процент от числа $proc_d = $amount/100*$proc_d; // высчитываем процент в день от числа $amountWithPct_all = $amount + $proc; // суммируем число с процентами от этого числа $amountWithPct_d = $amount + $proc_d; // суммируем число с процентами в день от этого числа round ($amountWithPct_all); // округляем round ($amountWithPct_d); // округляем echo "Дата оплаты: {$start}<br/>"; echo "Прошло дней: {$datediff}<br/>"; echo "Внесено: {$amount} ₽<br/>"; echo "Заработано на данный момент: $proc_d ₽<br/>"; echo "Cумма на конец периода: $amountWithPct_all ₽<br/><br/>"; } elseif($user_uid==$cur_id&&($reg_lid['lid']==2)){ /* Начисляем процент для lid=2*/ $proc = 60; //Процентов за всё время $proc_d =0.6*$datediff; //Процентов в день $proc = $amount/100*$proc; // высчитываем процент от числа $proc_d = $amount/200*$proc_d; // высчитываем процент в день от числа $amountWithPct_all = $amount + $proc; // суммируем число с процентами от этого числа $amountWithPct_d = $amount + $proc_d; // суммируем число с процентами в день от этого числа round ($amountWithPct_all); // округляем round ($amountWithPct_d); // округляем echo "Дата оплаты: {$start}<br/>"; echo "Прошло дней: {$datediff}<br/>"; echo "Внесено: {$amount} ₽<br/>"; echo "Заработано на данный момент: $proc_d ₽<br/>"; echo "Cумма на конец периода: $amountWithPct_all ₽<br/><br/>"; } elseif ($user_uid==$cur_id&&($reg_lid['lid']==3)){ /* Начисляем процент для lid=3*/ $proc = 89; //Процентов за всё время $proc_d =0.89*$datediff; //Процентов в день $proc = $amount/100*$proc; // высчитываем процент от числа $proc_d = $amount/300*$proc_d; // высчитываем процент в день от числа $amountWithPct_all = $amount + $proc; // суммируем число с процентами от этого числа $amountWithPct_d = $amount + $proc_d; // суммируем число с процентами в день от этого числа round ($amountWithPct_all); // округляем round ($amountWithPct_d); // округляем echo "Дата оплаты: {$start}<br/>"; echo "Прошло дней: {$datediff}<br/>"; echo "Внесено: {$amount} ₽<br/>"; echo "Заработано на данный момент: $proc_d ₽<br/>"; echo "Cумма на конец периода: $amountWithPct_all ₽<br/><br/>"; } else{ } } ?> Спойлер: Таблицы Вопрос: Как связать все эти столбцы между собой чтобы скрипт понял что это относится к одному пользователю? В соответствии с этим прибавить значение из referrals.amount к $amount (из кода выше) для пользователя к которому относятся эти столбцы. Ковыряю, ковыряю, а толка 0. Знаний совсем не хватает. Заранее большое спасибо.
http://www.skillz.ru/dev/php/article-Obyasnenie_SQL_obedinenii_JOIN_INNER_OUTER.html --- Добавлено --- Фриланс го.
На данный момент получилось так: Код (Text): $sql = mysqli_query($link, "SELECT * FROM " . $wpdb->base_prefix . "ihc_orders LEFT JOIN " . $wpdb->base_prefix . "users ON " . $wpdb->base_prefix . "ihc_orders.uid=" . $wpdb->base_prefix . "users.id LEFT JOIN " . $wpdb->base_prefix . "uap_affiliates ON " . $wpdb->base_prefix . "ihc_orders.uid=" . $wpdb->base_prefix . "uap_affiliates .uid LEFT JOIN " . $wpdb->base_prefix . "uap_referrals ON " . $wpdb->base_prefix . "uap_referrals.affiliate_id=" . $wpdb->base_prefix . "uap_affiliates .uid WHERE " . $wpdb->base_prefix . "ihc_orders.uid=" . $wpdb->base_prefix . "users.id "); Не знаю правильно или нет. И не понятно как вытащить значение из таблицы referrals столбец amount. Не поняла.