SQL Подсчет записей с количеством и наличием - PullRequest
1 голос
/ 06 февраля 2011

У меня проблемы с тем, что я считал простым запросом для подсчета записей:

SELECT req_ownerid, count(req_status_lender) AS total6 
FROM bor_requests
WHERE (req_status_lender = 0 AND req_status_borrower = 0) OR 
      (req_status_lender = 1 AND req_status_borrower = 1)
GROUP BY req_ownerid 
HAVING req_ownerid = 70

Я думал, что это подсчитает все записи, где (req_status_lender = 0 И req_status_borrower = 0) и (req_status_lender = 1 AND req_status_borrower = 1), а затем даст мне общее количество, но это даст мне только сумму для обоих (req_status_lender = 0 И req_status_borrower = 0) или (req_status_lender = 1 И req_status_borrower = 1).

Есть идеи, что я делаю не так?

1 Ответ

2 голосов
/ 06 февраля 2011

Вы должны использовать предложение HAVING только для ограничения того, что было сгруппировано в вашем запросе выше - например, если вы хотите выбрать все те строки, где SUM(....) или COUNT(...) больше, чем, скажем, 5, то вы бы использовали HAVING SUM(...) > 5

То, что вы здесь делаете, это стандартное предложение WHERE - добавьте его туда!

SELECT req_ownerid, count(req_status_lender) AS total6 
FROM bor_requests
WHERE req_ownerid = 70
      AND ((req_status_lender = 0 AND req_status_borrower = 0) OR 
           (req_status_lender = 1 AND req_status_borrower = 1))
GROUP BY req_ownerid 
...