2012-06-14 2 views
0

Привет У меня есть запрос, который возвращает две строки данных как счетчик. Я хочу найти сумму значений столбца. My sql:найти сумму значений, найденных по запросу

(SELECT count(memberid) count 
    FROM `friendRequest`, Member 
    where status = 2 and memberid = sender and receiver = 19) 
UNION 
(SELECT count(memberid) count 
    FROM `friendRequest`, Member 
    where status = 2 and memberid = receiver and sender = 19) 

Я попытался использовать Select Sum (мой запрос выше), но я получаю ошибку. Может кто-то, пожалуйста, помогите мне. Мне просто нужны некоторые из вышеперечисленных значений.

С уважением Панкай

+0

SUM должно это сделать .... какая ошибка вы получаете? – GDP

+0

Какая ошибка вы получаете, когда используете СУММ? – alfasin

+0

да, скажите нам, что вы хотите сделать, потому что я думаю, что запрос может быть улучшен. – jcho360

ответ

4

Можно захватить оба набора результатов в одном запросе:

SELECT count(memberid) count 
FROM `friendRequest`, Member 
WHERE status = 2 AND (
    (memberid = sender AND receiver = 19) OR 
    (memderid = receiver AND sender = 19) 
) 
+0

благодарит Борта, теперь это выглядит так просто. Я усложнил запрос – pankaj

0

Если вы собираетесь использовать агрегацию, вам нужно сгруппировать его что-то с использованием GROUP BY

(SELECT count(memberid) SUM(count) 
    FROM `friendRequest`, Member 
    where status = 2 and memberid = sender and receiver = 19 
    GROUP BY Member) 
UNION 
(SELECT count(memberid) SUM(count) 
    FROM `friendRequest`, Member 
    where status = 2 and memberid = receiver and sender = 19 
    GROUP BY Member) 
0

должно работать как

SELECT SUM(count) 
FROM (
     (SELECT count(memberid) count 
      FROM `friendRequest`, Member 
      where status = 2 and memberid = sender and receiver = 19) 
      UNION 
     (SELECT count(memberid) count 
      FROM `friendRequest`, Member 
      where status = 2 and memberid = receiver and sender = 19) 
     ) AS anyAliasWillDo 

, но я настоятельно советую вам прекратить использовать неявные присоединяется (устаревшее) и начать использовать явный синтаксис объединения. Заявление затем становится

SELECT SUM(COUNT) 
FROM (
      SELECT COUNT(memberid) AS COUNT 
      FROM `friendRequest` AS fr 
        INNER JOIN Member AS m ON m.memberid = fr.sender 
      WHERE status = 2 AND receiver = 19 
      UNION ALL 
      SELECT COUNT(memberid) AS COUNT 
      FROM `friendRequest` AS fr 
        INNER JOIN Member AS m ON m.memberid = fr.receiver 
      WHERE status = 2 AND sender = 19 
     ) AS AnyAliasWillDo 
+0

Не нужна ли функция агрегации (СУММ) предложение GROUP BY? –

+0

@StanislavPalatnik - Не так, как написано здесь. Как написано в вашем ответе, да, это так. –

Смежные вопросы