php - 连接不同表的两个查询

标签 php mysql sql

我想找到在我的推荐表中出现最高的前 4 个赞助商,并在我的推荐表中总结每个赞助商的奖金,并回显该赞助商、它出现的次数以及来自该赞助商的奖金总和推荐表。

这是我的两个表的数据库架构

$bonuses = "CREATE TABLE IF NOT EXISTS bonuses (
    userid int (11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    sponsor VARCHAR (16) NOT NULL,
    username VARCHAR (20) NOT NULL,
    bonus int (6) NOT NULL,
    bonusid VARCHAR (5) NOT NULL,
    time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    status int (1) NOT NULL DEFAULT '0'
   )ENGINE=InnoDB DEFAULT CHARSET= latin1";

$query = mysqli_query($conn, $bonuses);

$referrals = "CREATE TABLE IF NOT EXISTS referrals (
    userid int (11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    sponsor VARCHAR (16) NOT NULL,
    username VARCHAR (20) NOT NULL,
    phoneNumber VARCHAR (11) NOT NULL,
    email VARCHAR (50) NOT NULL,
    reg_Date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    totalbonus int (7) NOT NULL DEFAULT '0',
    status int (1) NOT NULL DEFAULT '1',
    UNIQUE KEY (username)
   )ENGINE=InnoDB DEFAULT CHARSET= latin1";

$query = mysqli_query($conn, $referrals);

<?php
$query=mysqli_query($conn, "SELECT sponsor, COUNT(sponsor) AS numref FROM referrals  where not sponsor='admin' GROUP BY sponsor ORDER BY numref DESC LIMIT 4");
            echo '<div style="font-size:20px; font-weight:bold; color: #fff; background-color:#800040; padding: 5px; border-radius: 10px;
            box-shadow:2px 2px 2px 2px #aaa; margin-bottom:2px;">WPM Award Statistics(Top 4)</div>';
            echo '<div class="table-responsive">';
            echo "<table class='table table-bordered table-hover table-striped'>";
            echo '<thead style="color:#800040;"><tr><th>Sponsor</th><th>Num of Referrals</th></tr></thead>';
        while ($result = mysqli_fetch_array($query)) {
            $sponsor=$result['sponsor'];
            $numref=$result['numref'];
            echo '<tbody><tr><td>', "$sponsor", '</td><td>', "$numref", '</td></tr></tbody>';

        }
            echo '</table></div>';
?>

这是我已经准备好的赞助商和推荐人数表

我想回显第三列,其中包含每个赞助商的奖金总和,其中 status=3

最佳答案

SELECT ref.sponsor, COUNT(ref.sponsor) AS numref, sum(bns.bonus) as bonuses 
FROM referrals ref
LEFT JOIN bonuses bns ON bns.sponsor = ref.sponsor
WHERE NOT ref.sponsor='admin' AND bns.status = 3
GROUP BY ref.sponsor 
ORDER BY numref DESC 
LIMIT 4

或者

SELECT ref.sponsor, COUNT(ref.sponsor) AS numref, 
(SELECT sum(bonus) FROM bonuses WHERE sponsor = ref.sponsor AND status = 3) AS bonuses
FROM referrals ref
WHERE NOT ref.sponsor='admin'
GROUP BY ref.sponsor 
ORDER BY numref DESC 
LIMIT 4

关于php - 连接不同表的两个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55915628/

相关文章:

php - 使用 phpmailer 发送表单时没有页面刷新

php - 如何将PHP中的字符串截断为最接近一定数量字符的单词?

php - 显示带有可选空字段的整个表

php - 在SQL中显示客户名称列表无访问报告的好方法是什么

php - codeigniter 获取所有声明的路由

mysql - 如何修复此 DELETE 查询?

c# - 从 mysql 查询中获取正确的顺序或结果

sql - 在sys.servers中找不到服务器 'dbo'。

sql - Handler_read_rnd_next 的危险数字(或增长率)是多少?

php - 重定向不适用于 Cloud SQL