【问题标题】:PHP MYSQL Query to combine and add two equalent resultPHP MYSQL查询组合并添加两个相等的结果
【发布时间】:2013-01-29 09:56:20
【问题描述】:

请有人帮我解决我已经为此花了两天时间的 sql 查询....

我在下面给出了一个 MYSQL 查询

(SELECT
  c.cl_list as cl_list,
  c.name as name,
  pc.value as value,
  count( pc.value) as total
FROM
  projs p 
  LEFT JOIN classify_proj_new pc 
    ON p.proj_id = pc.proj_id_fk
  LEFT JOIN classify_list c 
    ON c.cl_list = pc.class_id_fk
WHERE
  MATCH ( p.title ) AGAINST ( 'jerm'  IN BOOLEAN MODE )
GROUP BY 
  c.cl_list,
  pc.value)
UNION ALL
(SELECT
  c.cl_list as cl_list,
  c.name as name,
  pc.value as value,
  count( pc.value) as total
FROM
  jerm p 
  LEFT JOIN classify_jerm_new pc
    ON p.jerm_id = pc.jerm_id_fk
  LEFT JOIN classify_list c
    ON c.cl_list = pc.class_id_fk
WHERE
  MATCH ( p.jermname ) AGAINST ( 'jerm'  IN BOOLEAN MODE )
GROUP BY
  c.cl_list,
  pc.value)

结果如下:

  cl_list      name              value        total
------------------------------------------------------------------------------------
    1       department         jewller          2
    3       price                 50            2
    6       color                blue           1
    6       color                Red            2
    1       department         jewller          1
    6       color                Red            1

但我试图得到一个结果,它可以添加重复值的总数并避免重复值....类似这样的事情(下):

  cl_list      name              value        total
------------------------------------------------------------------------------------
    1       department         jewller          3
    3       price                 50            2
    6       color                blue           1
    6       color                Red            3

请有人帮助我,我对我的输出感到非常难过...

非常感谢您提前...

【问题讨论】:

  • group name 和 value 的结果,而不是 cl_list 和 value,
  • @AkamOmer 我尝试过这种方式,但仍然得到相同的结果。what todo.thank
  • @SuhelMeman 伙计,我以另一种方式得到相同的结果..任何其他服从...thanx
  • 检查下面的查询,我在答案部分发布了

标签: php mysql


【解决方案1】:

从您的查询中选择并按 cl_list、名称和值分组:

SELECT
  cl_list,
  name,
  value,
  sum(total) as total
FROM (
  -- your current query here ...
) data
GROUP BY
  cl_list,
  name,
  value

【讨论】:

  • @hasan: 在这种情况下只需要按名称分组 :)
  • 哇,感谢上帝……光环,你拯救了我的一天……谢谢你太完美了……你真是个天才
  • @AkamOmer 为真,因为如果 MySQL 不在ONLY_FULL_GROUP_BY 模式下,它允许不明确的 group by 查询。我选择安全起见并坚持 SQL 标准 :)
  • 它就像视图(从视图中选择)也是技巧
【解决方案2】:

试试下面的代码。它将显示唯一的记录并避免重复。

GROUP BY c.name

【讨论】:

    【解决方案3】:

    group名称和值的结果

    (SELECT c.cl_list as cl_list, c.name as name, pc.value as value, count( pc.value) as total
    FROM projs p 
    LEFT JOIN classify_proj_new pc ON p.proj_id = pc.proj_id_fk
    LEFT JOIN classify_list c ON c.cl_list = pc.class_id_fk
    WHERE MATCH ( p.title ) AGAINST ( 'jerm'  IN BOOLEAN MODE )
    GROUP BY c.name, pc.value)
    UNION ALL
    (SELECT  c.cl_list as cl_list, c.name as name, pc.value as value, count( pc.value) as total
     FROM jerm p 
     LEFT JOIN classify_jerm_new pc ON p.jerm_id = pc.jerm_id_fk
     LEFT JOIN classify_list c ON c.cl_list = pc.class_id_fk
     WHERE MATCH ( p.jermname ) AGAINST ( 'jerm'  IN BOOLEAN MODE )
     GROUP BY c.name, pc.value)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2010-11-12
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      相关资源
      最近更新 更多