your tables structures is not normal, but i'm not judge you that you are wrong, but actually this give you a problem don't you.
you need to "normalize" your table structure (i'm not good enough, but i suggest you to learn this from books, net or friends maybe).
---------
table state : state_id, state_name (primary key state_id)
table city : city_id, state_id, city_name (primary key city_id, state_id)
table zip : zip_number, city_id (primaty key zip_number)
select state.state_id, state_name, city.city_id, city_name, zip_number from state, city, zip where state.state_id = city.state_id and city.city_id = zip.city_id and state.state_id = $sid and city.city_id = $cid and zip_number = $zn;
with this shema so you can get how much city on a state, and etc,
select state_name, count(city_id) from state,city where state.state_id = city.state_id group by state.state_id;