Je travaille sur un projet qui obtient des valeurs de plusieurs stations de mesure (par exemple 50000) situées partout dans le monde. J'ai 2 bases de données, l'une stockant des informations sur les stations de mesure, l'autre stockant des valeurs obtenues à partir de ces stations (par exemple plusieurs millions). Une version super-simplifiée de la structure de base de données pourrait ressembler à ceci:MySQL cross-database WHERE clause
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
je besoin d'une liste des noms de tous les pays de la première base de données pour lesquelles les valeurs existent dans la deuxième base de données. J'utilise MySQL avec InnoDB, donc cross-database étranger sont pris en charge.
Je suis perdu sur l'instruction SELECT, plus précisément, la clause where.
Sélection des ID des pays pour lesquels des valeurs existent semble facile:
SELECT DISTINCT id FROM measurement_values.measurement_value
Cela prend quelques minutes la première fois, mais il est très rapide dans les appels suivants, même après le redémarrage du serveur de base de données; Je suppose que c'est normal.
Je pense que le truc COUNT mentionné dans Problem with Query Data in a Table et Mysql Complex Where Clause pourrait aider, mais je ne peux pas sembler faire les choses correctement.
SELECT country.name FROM measurement_stations WHERE country.id = measurement_station.id
AND (id is in the result of the previous SELECT statement)
Quelqu'un peut-il m'aider?
qui fonctionne, excellent. merci beaucoup pour l'aide rapide! :-) – ssc
première fois que je lance la requête: 184 lignes dans l'ensemble (27 min 10.41 sec) – ssc
la deuxième fois que je l'exécute: 184 lignes dans l'ensemble (1 min 20,92 sec) – ssc