Я работаю над проектом, который получает значения от многих измерительных станций (например, 50000), расположенных по всему миру. У меня есть две базы данных: одна хранит информацию о станциях измерений, другая хранит значения, полученные с этих станций (например, несколько миллионов). Упрощенная версия структуры базы данных может выглядеть следующим образом:
database measurement_stations
table measurement_station
id : primary key
name : colloquial station name
country : foreign key into table country
table country
id : primary key
name : name of the country
database measurement_values
table measurement_value
id : primary key
station : id of the station the value came from
value : measured value
Мне нужен список имен всех стран из первой базы данных, для которых существуют значения во второй базе данных. Я использую MySQL с InnoDB, поэтому поддерживаются иностранные базы данных.
Я заблудился в операторе SELECT, точнее, в предложении where.
Выбор идентификаторов стран, для которых существуют значения, кажется простым:
SELECT DISTINCT id FROM measurement_values.measurement_value
В первый раз это занимает пару минут, но очень быстро при последующих вызовах, даже после перезапуска сервера базы данных; Я полагаю, это нормально.
Я думаю, что трюк COUNT, упомянутый в Проблема с данными запросов в таблице и Mysql Complex, где может помочь пункт , но я не могу понять, как это правильно.
SELECT country.name FROM measurement_stations WHERE country.id = measurement_station.id
AND (id is in the result of the previous SELECT statement)
Кто-нибудь может мне помочь?