php - MySQL 我需要使用什么样的查询

标签 php mysql

我正在制作一个面板,我可以在其中管理我的用户,我想显示用户名、电子邮件,我想显示下了多少订单。在我的数据库中,我有 2 个表格,1 个用户,1 个订单。我将用户的用户名保存在订单表中,这样我就知道哪个用户已经购买了它。

但是,我想在 foreach 循环中编写一个面板,其中包含我的用户的概述。我有用户名循环,通过电子邮件发送我如何向其中添加订单金额。

<?php
$model = $connection->createCommand('SELECT * FROM user');
$adminAccounts = $model->queryAll();
foreach($adminAccounts as $results){
        $accounts['id'] = $account_id;
        $accounts['username'] = $results['username'];
        $accounts['email'] = $results['email'];
        $accounts['rest'] = $results;
    echo "
        <tr>
            <td>
                <p>"  . $newValidation->safeEcho($accounts['username']) ." </p>
            </td>
            <td>
                <p>"  . $newValidation->safeEcho($accounts['email'])." </p>
            </td>
        </tr>
    ";
}   

假设我的 table 看起来像这样

<username> <email>

现在我希望它看起来像这样

 <username> <email> <total orders>

我在想我应该使用内部联接,但我该怎么做呢?

问候

最佳答案

我认为您可以将查询更改为:

SELECT user.*, t.cnt FROM user JOIN (SELECT gebruikersnaam, COUNT(*) AS cnt FROM orders GROUP BY gebruikersnaam) t ON user.username = t.gebruikersnaam

通过此查询,您可以获得用户订单,但您将跳过没有订单的用户,因此要获取他们,您可以执行 LEFT JOIN:

SELECT user.*, t.cnt FROM user LEFT JOIN (SELECT gebruikersnaam, COUNT(*) AS cnt FROM orders GROUP BY gebruikersnaam) t ON user.username = t.gebruikersnaam

我建议表orders中users的字段是username。在您的问题中,您指出该表是用户,但在您的查询表中是用户。我正在使用用户。如果你用这个改变你当前的查询,你可以在你的代码中添加:

foreach($adminAccounts as $results){
    $accounts['id'] = $account_id;
    $accounts['username'] = $results['username'];
    $accounts['email'] = $results['email'];
    $accounts['total_orders'] = ($results['cnt'] == NULL) ? 0 : $results['cnt']; // orders per user
    $accounts['rest'] = $results;
    echo "
        <tr>
            <td>
                <p>"  . $newValidation->safeEcho($accounts['username']) ." </p>
            </td>
            <td>
                <p>"  . $newValidation->safeEcho($accounts['email'])." </p>
            </td>
            <td>
                <p>"  . $newValidation->safeEcho($accounts['total_orders'])." </p>
            </td>

        </tr>
    ";
}

关于php - MySQL 我需要使用什么样的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29188363/

相关文章:

php - 获取数据错误关系表

php - 获取拖放值以保存在mysql数据库中

php - 在网站上用表格显示 MySQL 数据的最简单方法?

php - 什么是mysql中的复合外键?

php - 清空 libs.css 和 libs.js 文件

php - Magento - 在 Magento 扩展中加载模型时出错?

python - 如何使用python通过ip地址连接mysql?

mysql - 如何在 MySQL 的时态表中插入默认值?

mysql - mysql 8.0中任意格式日期的转换

mysql - Django 中用于 sql join 的等效 ORM 查询是什么