Программирование Викиданных/ТопКар SQL

Запросы на языке SQL к базе данных ТопКар.

См. Топонимия Карелии.

См. схему базы данных в проекте GitHub topkar.

См. код для сравнения результатов запросов к wikidata и topkar

Запрос править

Получить все объекты для которых не заполнено поле geotype_id править

SELECT id, name FROM toponyms WHERE geotype_id IS NULL

Получить id топонима, название топонима, geotype_id и имя geotype править

 SELECT toponyms.id, toponyms.name, geotype_id, name_ru, wd FROM toponyms LEFT JOIN geotypes ON toponyms.id WHERE geotype_id = geotypes.id INTO OUTFILE 'output.txt'

Горы править

Получить все объекты гор из таблицы toponyms править

SELECT name FROM toponyms WHERE geotype_id = 53 INTO OUTFILE 'mountains.txt';

Получить все топонимы гор из таблицы toponyms и topnames править

CREATE TABLE sets_1 SELECT id, name, geotype_id FROM toponyms WHERE geotype_id = 53;
SELECT toponym_id, topnames.name FROM topnames INNER JOIN sets_1 ON toponym_id WHERE sets_1 .id = topnames.toponym_id
UNION
SELECT id, name FROM stream_1 INTO OUTFILE 'mountain.txt';
DROP TABLE sets_1

Озёра править

Получить все объекты озёр из таблицы toponyms править

SELECT name FROM toponyms WHERE geotype_id = 25 INTO OUTFILE 'lakes.txt';

Получить все топонимы озёр из таблицы toponyms и topnames править

CREATE TABLE sets_1 SELECT id, name, geotype_id FROM toponyms WHERE geotype_id = 25;
SELECT toponym_id, topnames.name FROM topnames INNER JOIN sets_1 ON toponym_id WHERE sets_1 .id = topnames.toponym_id
UNION
SELECT id, name FROM stream_1 INTO OUTFILE 'lakes.txt';
DROP TABLE sets_1

Реки править

Получить все объекты рек из таблицы toponyms править

SELECT name FROM toponyms WHERE geotype_id = 26 INTO OUTFILE 'rivers.txt';

Получить все топонимы рек из таблицы toponyms и topnames править

CREATE TABLE sets_1 SELECT id, name, geotype_id FROM toponyms WHERE geotype_id = 26;
SELECT toponym_id, topnames.name FROM topnames INNER JOIN sets_1 ON toponym_id WHERE sets_1 .id = topnames.toponym_id
UNION
SELECT id, name FROM stream_1 INTO OUTFILE 'rivers.txt';
DROP TABLE sets_1

Острова править

Получить все объекты островов из таблицы toponyms править

SELECT name FROM toponyms WHERE geotype_id = 51 INTO OUTFILE 'islands.txt';

Получить все топонимы рек из таблицы toponyms и topnames править

CREATE TABLE sets_1 SELECT id, name, geotype_id FROM toponyms WHERE geotype_id = 51;
SELECT toponym_id, topnames.name FROM topnames INNER JOIN sets_1 ON toponym_id WHERE sets_1 .id = topnames.toponym_id
UNION
SELECT id, name FROM stream_1 INTO OUTFILE 'islands.txt';
DROP TABLE sets_1

Деревни править

Получить все объекты деревень из таблицы toponyms править

SELECT name FROM toponyms WHERE geotype_id = 21 INTO OUTFILE 'villages.txt';

Получить все топонимы рек из таблицы toponyms и topnames править

CREATE TABLE sets_1 SELECT id, name, geotype_id FROM toponyms WHERE geotype_id = 21;
SELECT toponym_id, topnames.name FROM topnames INNER JOIN sets_1 ON toponym_id WHERE sets_1 .id = topnames.toponym_id
UNION
SELECT id, name FROM stream_1 INTO OUTFILE 'villages.txt';
DROP TABLE sets_1