gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 00:02:23 24 4
gpt4 key购买 nike

我正在制作一个面板,我可以在其中管理我的用户,我想显示用户名、电子邮件,我想显示下了多少订单。在我的数据库中,我有 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com