2015-02-10 2 views
0

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

Результаты возвращаются как это:

AK 1 
AL 5 
CA 3 
... 
WV 4 
WY 6 
UN 10 

НО должен вернуться как:

AK 1 
AL 5 
AR 0 
AZ 0 
CA 3 
CO 0 
CT 0 
... 
WV 4 
WY 6 
UN 10 

Является ли это просто вопрос внутреннего соединения со списком государств для обеспечения всегда есть состояние для отсчета нуля? У меня нет таблицы состояний, но у меня есть список состояний, таких как «AK», «AL», «AR» и т. Д. Я не был уверен, можно ли так присоединиться. Запрос слишком большой для публикации, но если нужно, я посмотрю, смогу ли я что-нибудь придумать.

+0

У вас есть запрос, который вы уже используете? –

+0

Использовать подзапрос вместо объединений (использовать подсчет внутри подзапроса) – parveen

+0

mysql оптимизирует соединения лучше; нужно быть осторожным, используя подзапросы, и точно знать, как будет работать с ними mysql. Но внутренние объединения здесь не помогут; используйте LEFT JOIN, как показано в ответе ниже. – Andras

ответ

2

Вы могли LEFT JOIN в список государств, что-то вроде:

SELECT a.St 
     ,COUNT(b.St) AS Ct 
FROM State_List a 
LEFT JOIN Other_Table b 
    ON a.St = b.St 
GROUP BY a.St 

LEFT JOIN будет возвращать не-присоединения записей из таблицы на левой стороне соединения, в этом случае список состояний. Затем мы получаем COUNT() поле из таблицы, которое может или не может присоединиться.

+0

Если бы я присоединился к столу, все было бы хорошо, но как насчет присоединения к списку вроде «AK», «AL», «AR» и т. Д.? –

+0

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

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