2012-03-14 96 views
1
SELECT 
`name`, count(`cid`) AS count, Min(`price-3`) AS min, Max(`price-3`) AS max 
FROM ed_prices 
WHERE type="M" 
GROUP BY cid, type 

该查询给我我想要什么类型M.但我有4种不同的类型,如M和结果为他们每个人是必要的。虽然此查询给了我这样的结果:MySQL的 - 多计数,最小值,最大值查询

name, count, min, max 

我需要这样一个结果:

name, countM, minM, maxM, countP, minP, maxP, countZ, minZ, maxZ ... 

我怎样才能做到这一点?

回答

2

我知道这是不是正是你要寻找的,但你能可能与这方面的工作:

​​

您也可以尝试在此自连接的结果合并成一个线,得到的结果是你的问题提出要求,但它是比任何产品屈指可数少可扩展..

SELECT `name` 
     , countM 
     , minM 
     , maxM 
     , countZ 
     , minZ 
     , maxZ 
     , countP 
     , minP 
     , maxP 
     , countQ 
     , minQ 
     , maxQ 
    FROM 
     (SELECT `name` 
       , count(`cid`) AS countM 
       , Min(`price-3`) AS minM 
       , Max(`price-3`) AS maxM 
      FROM ed_prices 
     WHERE type = "M" 
     GROUP BY cid) MType 
    INNER JOIN 
     (SELECT `name` 
       , count(`cid`) AS countP 
       , Min(`price-3`) AS minP 
       , Max(`price-3`) AS maxP 
      FROM ed_prices 
     WHERE type = "P" 
     GROUP BY cid) PType ON MType.`name` = PType.`name` 
    INNER JOIN 
     (SELECT `name` 
       , count(`cid`) AS countZ 
       , Min(`price-3`) AS minZ 
       , Max(`price-3`) AS maxZ 
      FROM ed_prices 
     WHERE type = "Z" 
     GROUP BY cid) ZType ON MType.`name` = ZType.`name` 
    INNER JOIN 
     (SELECT `name` 
       , count(`cid`) AS countQ 
       , Min(`price-3`) AS minQ 
       , Max(`price-3`) AS maxQ 
      FROM ed_prices 
     WHERE type = "Q" 
     GROUP BY cid) QType ON MType.`name` = QType.`name` 
+0

这不是在我的处境帮助。我需要在不同的列中分离结果。 – gzg 2012-03-14 22:17:01

+0

@gzg,第二个版本怎么样? – 2012-03-14 22:22:28

+0

我觉得差不多完成了,但是有些东西缺失或错误。它导致一个空的结果集,我不知道为什么。 – gzg 2012-03-14 22:26:17