#sql #oracle #oracle12c
#sql #Oracle #oracle12c
Вопрос:
У меня есть таблица со списком состояний и одна с городами, где State_number действует как внешний ключ в таблице cities. Возможно ли перечислить города по названию их штата?
Это самое близкое, что я получил:
SELECT State_name, City_name
FROM States, Cities
JOIN Cities on States.State_number = Cities.State_number
WHERE States.State_name IN ('Munich', 'Brandenburg');
Пример текущего вывода:
State_name
City_name
Bavaria
Munich
Bavaria
Nuremburg
Brandenburg
Berlin
В то время как я надеюсь на что-то вроде:
Munich
7
Brandenburg
10
Комментарии:
1. Совет сегодняшнего дня: переключитесь на современный, явный
JOIN
синтаксис! Проще писать (без ошибок), легче читать и поддерживать, и при необходимости легче преобразовать во внешнее соединение2. Я немного сбит с толку. Разве Мюнхен и Бранденбург не являются городами , а не штатами ? Что такое «7» и «10»?
Ответ №1:
Просто соедините их и примените предложение WHERE:
select st.state_name, c.city_name
from states s
join cities c on s.state_number = c.state_number
where s.state_name = 'Bavaria';
Чтобы получить количество городов в каждом штате (что не было частью исходного вопроса), вы можете использовать group by
select st.state_name, count(*) as number_of_cities
from states s
join cities c on s.state_number = c.state_number
where s.state_name in ('Brandenburg','Bavaria')
group by st.state_name;
Комментарии:
1. В настоящее время это список каждого штата и города отдельно. Возможно ли сгруппировать их все в одном заголовке для соответствующих штатов и подсчитать количество городов в каждом штате? На данный момент я получаю: Бавария Мюнхен Бавария Нюрнберг
2. Отредактируйте свой вопрос и покажите нам некоторые примеры табличных данных и ожидаемый результат, все в виде форматированного текста (без изображений).)
3. @Crocs123: теперь это совершенно другой вопрос.
Ответ №2:
Я думаю, что ты хочешь:
SELECT s.State_name, c.City_name
FROM States s JOIN
Cities c
ON s.State_number = c.State_number
WHERE c.City_name IN ('Munich', 'Brandenburg');
Примечания:
- Никогда не используйте запятые в
FROM
предложении. - Всегда используйте правильный, явный, стандартный, читаемый
JOIN
синтаксис. - Используйте псевдонимы таблиц! И уточните все ссылки на столбцы!
- Ваш фильтр должен быть по названию города, а не по названию штата. Я думаю, что это фундаментальная проблема с вашей версией запроса.