php - MYSQL Left-Join 表选择数据问题-逻辑错误

标签 php mysql codeigniter logic left-join

我有以下 4 个表。

1. DEBATES. 
   [ID, STARTER_PACK_ID]
2. DEBATE_GROUPS.
   [ID, DEBATE_ID, STAKEHOLDER_ID]
3. DEBATE_STAKEHOLDERS.
   [ID, STARTER_PACK_ID, NAME]
4. DEBATE_STARTER_PACKS.
   [ID]

我正在尝试选择每个辩论组,其中包含每个利益相关者 ID、利益相关者 ID 的名称以及参与该辩论的该利益相关者的计数,其中 starter_pack_id 等于特定值。例如,必须显示这些,即使计数为 0 或存在空值也是如此

预期的结果如下..

DEBATE_ID | STAKEHOLDER_ID | COUNT(Example)
-------------------------------------------
   1             1               2
   1             2               1
   1             3               3
   2             1               4
   2             2               1
   2             3               2

The issue is that it isn't showing the debates which haven't been used in the database, which is what I required. What should I change in the code below to retrieve this information?

下面是我的尝试...

SELECT 
    a.id, 
    a.name, 
    a.abbreviation, 
    b.debate_id, 
    IF(COUNT(b.stakeholder_id) = 0, 0, COUNT(b.stakeholder_id)) AS total_freq, 
    COUNT(b.stakeholder_id) AS freq 
FROM 
    debate_stakeholders a LEFT JOIN debate_groups b ON b.stakeholder_id = a.id 
GROUP BY
    a.id, b.debate_id 
HAVING 
    COUNT(*) < 3 
ORDER BY 
    a.id,b.debate_id,b.stakeholder_id 

最佳答案

SELECT 
    a.id, 
    a.name, 
    a.abbreviation, 
    d.id, 
    IF(COUNT(b.stakeholder_id) = 0, 0, COUNT(b.stakeholder_id)) AS total_freq, 
    COUNT(b.stakeholder_id) AS freq 
FROM 
    debate_stakeholders a LEFT JOIN debate_groups b ON b.stakeholder_id = a.id 
    RIGHT JOIN debates as d ON b.debate_id = d.id
GROUP BY
    a.id, b.debate_id 
HAVING 
    COUNT(*) < 3 
ORDER BY 
    a.id,b.debate_id,b.stakeholder_id 

关于php - MYSQL Left-Join 表选择数据问题-逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38844063/

相关文章:

php - 如何在 php 网站中包含最新的火车/航类详细信息以进行预订?

php - MYSQL 内部连接两个表相同的列名不同的值

php - Codeigniter 2.2 解析错误 : syntax error, 意外 T_CONSTANT_ENCAPSED_STRING

mysql - CodeIgniter 数据表日期搜索范围

php - 使用 GROUP SEPARATOR 的 Explode() 函数

php - 为什么此MYSQLi INSERT查询失败而没有错误或异常

php - 从两个表创建自定义 json 数组

MySQL:获取多列中整数值的计数和总和

java - 无法连接到数据库 - PlayFramework + Ebean

php - Codeigniter 3.x/$config ['time_reference' ] = 'gmt' 无法按预期工作