SQL-запрос в запросе - PullRequest
       2

SQL-запрос в запросе

0 голосов
/ 19 февраля 2011

У меня есть две таблицы, с которыми я работаю, одна зависит от другой. И я хотел бы получить информацию о независимых таблицах и подсчитать, сколько раз каждая строка данных использовалась зависимой таблицей. С моим текущим запросом я получаю количество записей только 1, когда знаю, что на самом деле всего 38 записей. Что я делаю не так?

SELECT r.rid, r.name, COUNT(b.bid) AS brewtot 
FROM recipes r, brews b
WHERE r.uid = '#cookie.id#' AND b.rid = r.rid

Ответы [ 5 ]

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

Я подозреваю, что вы хотите сделать, это добавить

GROUP BY b.rid

при условии, что ваш вопрос: "Сколько варок для каждого рецепта?"

Также вы можете использовать LEFT JOIN для подсчета 0 строк, когда в рецепте нет варева:

SELECT r.rid, r.name, COUNT(b.bid) AS brewtot 
FROM recipes r LEFT JOIN brews b
ON b.rid = r.rid
WHERE r.uid = '#cookie.id#'
GROUP BY b.rid
1 голос
/ 19 февраля 2011
select r.rid, r.name, count(b.bid) as brewtot
from recipes r inner join brews b on r.rid = b.rid 
where r.uid = '#cookie.id#' group by r.rid, r.name

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

0 голосов
/ 19 февраля 2011

Я удивлен, что запрос работает даже без группы? Попробуйте:

SELECT  r.rid
,       r.name
,       COUNT(b.bid) AS brewtot 
FROM    recipes r
JOIN    brews b
ON      b.rid = r.rid
WHERE   r.uid = '#cookie.id#'
GROUP BY
        r.rid
,       r.name

На SQL Server с моей настройкой теста это возвращает правильное количество.

0 голосов
/ 19 февраля 2011

Вы должны сделать группу на рид.

SELECT r.rid, r.name, COUNT(b.bid) AS brewtot 
FROM recipes r, brews b
WHERE r.uid = '#cookie.id#' AND b.rid = r.rid 
group by r.rid

Хотите также просмотреть все записи о пиве?

0 голосов
/ 19 февраля 2011

Добавьте «GROUP BY r.rid» в конце вашего запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...