Программирование Викиданных/ТопКар 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
Получить все топонимы болот из таблицы toponyms и topnames
[править]CREATE TABLE sets_1 SELECT id, name, geotype_id FROM toponyms WHERE geotype_id = 42;
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 'swamps.txt';
DROP TABLE sets_1