0

次のクエリがあります

SELECT 
          c.cd,
          c.c_id 
FROM
          f f 
          INNER JOIN s s 
                    ON s.s_id = f.s_id 
          INNER JOIN c c 
                    ON c.c_id = s.c_id 
WHERE f.m_id = 2 
          AND f.deleted = 'no' 
GROUP BY s.c_id 
ORDER BY f.update_datetime DESC ;

サンプルの結果セットを返します。

c.cd    c.c_id
moot    4
derp    5

c.c_id上記の結果セットの各レコードに対して反復する、上記の結果セットに基づく別のクエリがあります。

SELECT COUNT(*) as totals FROM s
WHERE c_id =?
AND status='good';

7いつ戻ってきていつc_id=4戻ってくる20c_id=5

2 つのクエリを組み合わせて、このような結果セットを形成する方法はありますか?

c.cd    c.c_id  totals
moot    4       7
derp    5       20
4

2 に答える 2

2

これを試して:

SELECT 
          c.cd,
          c.c_id,
          (SELECT COUNT(*) FROM  s WHERE c_id = c.c_id AND STATUS = 'good') totals 
FROM
          f INNER JOIN s  ON s.s_id = f.s_id 
          INNER JOIN c c ON c.c_id = s.c_id 
WHERE     f.m_id = 2 AND f.deleted = 'no' 
GROUP BY  s.c_id 
ORDER BY  f.update_datetime DESC ;
于 2012-05-20T01:21:58.303 に答える
1

このようなもの?

SELECT c.cd, c.c_id
      ,SUM(CASE WHEN s.status = 'good' THEN 1 ELSE 0 END) AS totals
  FROM f f
  INNER JOIN s s ON s.s_id = f.s_id 
  INNER JOIN c c ON c.c_id = s.c_id

WHERE f.m_id =2
  AND f.deleted='no'

GROUP BY s.c_id
ORDER BY f.update_datetime DESC;
于 2012-05-20T01:22:26.803 に答える