SQLLite Получение количества записей из таблицы соединений

У меня есть две таблицы, которые я соединяю, что возвращает 99 записей.

Вместо того, чтобы получать 99 записей, мне нужен только счет. У меня есть два запроса, которые я пробовал после некоторого поиска, но оба все еще перенастраивают 99 записей. Значит у меня что-то не так.

В таблице лотов будет или может быть несколько записей для представителя одной страны по коду страны (поле: dxcc). Таблица стран содержит страну со связанным с ней кодом страны (поле: код).

Чего я хотел бы, так это номеров уникальных округов, которые связаны с полосой 20M. в таблице лотов.

сначала я попробовал

SELECT COUNT(cc.code)
FROM lotw l
JOIN CountryCode AS cc on cc.code = l.dxcc 
WHERE l.DXCC > '' AND l.BAND IN ('20M')
GROUP BY l.DXCC

Затем я попытался

SELECT COUNT(cc.total)
FROM lotw l
JOIN (SELECT code,COUNT(Country) As total FROM CountryCode GROUP BY code) AS cc on cc.code = l.dxcc 
WHERE l.DXCC > '' AND l.BAND IN ('20M')
GROUP BY l.DXCC

Я предпочитаю второй метод, если я могу заставить его работать, потому что позже мне нужно присоединиться к еще паре таблиц.


person Mike    schedule 26.06.2013    source источник


Ответы (2)


Просто удалить из запроса

GROUP BY l.DXCC
person VitaliyG    schedule 26.06.2013
comment
Привет, VitaliyG, Спасибо за ответ, я удаляю l.dxcc и получаю подсчет, но он неверен, код страны показывает дубликаты? Мне нужно, чтобы Страны были уникальными? Итак, я попробовал SELECT code, COUNT (DISTINCT Country), но получил те же результаты, что и 662. Надеюсь, это имеет смысл. - person Mike; 27.06.2013

Хорошо, мне нужно было отменить мой запрос, чтобы это сработало.

SELECT COUNT(l.total)
FROM CountryCode cc
JOIN (SELECT dxcc, COUNT(*) As total FROM lotw  WHERE DXCC > '' AND BAND IN ('20M') GROUP BY dxcc) AS l on l.dxcc = cc.code 
person Mike    schedule 27.06.2013