2014-02-12 2 views
0

В моей базе данных есть две похожие таблицы с разными именами. Один из столбцов, содержащихся в обеих таблицах, называется «zips», который содержит почтовый индекс.SQL Count из двух таблиц с внутренним соединением из третьей таблицы

У меня есть другая таблица (US zip code table), где каждая запись содержит имя графства, идентификатор округа, состояние, идентификатор состояния и почтовый индекс.

Мне нужен запрос, который расскажет мне, сколько записей в первых двух таблицах соответствует указанному идентификатору округа, и группирует результаты по уезду.

То есть, скажем, таблица A имеет 4 записи для почтового индекса '30017', а таблица B имеет 1 запись для '30017'. В таблице почтовых индексов США «30017» соответствует названию графства «Gwinnett» и идентификатору округа «839». Когда я запускаю запрос, желаемый результат:

Gwinnett 5 

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

SELECT b.County, COUNT(*) as Calls FROM (aLeads a, pLeads p) 
INNER JOIN zipCodes b ON a.zip = b.ZipCode 
WHERE b.countyID IN (2897, 2146, 839) 
AND a.callDate BETWEEN '2013-10-01' AND '2013-11-30' 
GROUP BY b.County 

Любые идеи?

ответ

0

Try начиная с таблицей ZipCode, и присоединиться к нему с aLeads и умоляет:

SELECT b.County, COUNT(*) as Calls 
FROM zipCodes b 
INNER JOIN aLeads a ON a.zip = b.ZipCode 
INNER JOIN pLeads p ON p.zip = b.ZipCode 
WHERE b.countyID IN (2897, 2146, 839) 
GROUP BY b.County 
+0

Спасибо за предложение, и хорошая идея, чтобы начать с кодовой таблицей зип первым. Однако этот запрос возвращает пустой набор. Любые другие идеи? –

+0

Вы можете сделать две временные таблицы, первая из которых - это zipcode, соединенный с aLeads. Второй - это zipcode, соединенный с pLeads. Каждая временная таблица будет иметь почтовый индекс и счетчик. Наконец, присоедините две таблицы temp вместе и добавьте счетчики. – steinmas

+0

Его действительно близко к правильности. После некоторого анализа кажется, что единственная проблема с запросом, который вы предложили, - это критерии даты. Я думаю, что он возвращает пустой набор, потому что предложение даты рассматривает только таблицу a 'AND a.callDate BETWEEN '2013-10-01' AND '2013-11-30'' –

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