php - 显示具有多个需要累加的值的左连接

标签 php sql mysql database codeigniter

我有一个“网址”表,每个“网址”都可能附加了多个“转化”。我想累积所有转化的数值($),并计算与每个 URL 相关的转化量。

目前我正在使用左外连接将 url 表连接到转换表,但如果附加了多个转换,这只会重复 URL 记录。我想知道我能做些什么来解决这个问题,无论是在数据库方面还是在逻辑方面(我正在使用 PHP/CodeIgniter。)

如果有帮助,这里是 CodeIgniter Active Record 查询:

    $this->db->select('url.id, url.url, url.clicks,url.affiliate_url,conversion.commission');
    $this->db->from('url');
    $this->db->join('conversion', 'url.id = conversion.url_id','left outer');
    $this->db->where('url.user_id = '.$this->user_id);
    $this->db->order_by('url.id','DESC');
    $data['urls'] = $this->db->get()->result();

提前致谢!

汤姆

解决方法:

$this->db->select('url.id, url.url, url.clicks,url.affiliate_url,count(conversion.id) AS conversions,sum(conversion.commission) AS earnings');
$this->db->from('url');
$this->db->join('conversion', 'url.id = conversion.url_id','left outer');
$this->db->where('url.user_id = '.$this->user_id);
$this->db->group_by('url.id'); 
$this->db->order_by('url.id','DESC');
$data['urls'] = $this->db->get()->result();
enter code here

最佳答案

您需要按 URL 分组:

SELECT url.id, url.url, sum(url.clicks), count(url.clicks,url.affiliate_url), sum(conversion.commission)
FROM url
LEFT JOIN conversion ON url.id = conversion.url_id
WHERE url.user_id = ?
GROUP BY url.id, url.url
ORDER BY url.id DESC

抱歉,它不在 codeigniter 中,但我相信您可以转换。

关于php - 显示具有多个需要累加的值的左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4214586/

相关文章:

java - 在没有代码生成的情况下使用jOOQ生成SQL时如何使用jOOQ转换器?

php显示类别和子类别

php - 在 wordpress 上建立数据库连接时出错

mysql - 在 solr 中的多个字段上复制左连接

php - 在 WooCommerce 中为特定产品从购物车中隐藏 "remove item"

PHP 分页 - 无法检测页面

sql - 显示查询中 SQL Server 代理运算符的列表

mysql - SELECT DISTINCT 不返回不同的值

javascript - 在同一页面中使用多个 ajax 表单

php - 如何解决 BadMethodCallException,调用未定义的方法 Illuminate\Database\Query\Builder::filter()