Перейти к содержанию

Программирование Викиданных/ТопКар 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