Задача C. Сисадмин в библиотеке

Автор:А. Баранов   Ограничение времени:1 сек
Входной файл:test.db   Ограничение памяти:256 Мб
Выходной файл:test.log  

Условие

После того как Вася устроился сисадмином в одну крупную научную библиотеку, он пришел в ужас от того, насколько небрежно была сформирована библиографическая база, с которой ему на тот момент предстояло работать.

Ранее все данные об имеющихся в наличии научных статьях собирались в одну большую таблицу ARTICLES:

AUTHOR_NAME VARCHAR NOT NULL, TITLE VARCHAR NOT NULL, YEAR INTEGER NOT NULL;

У записей в такой таблице для авторов, имеющих более одной статьи, первый атрибут будет повторяться. Последние два атрибута также могут совпасть, если в таблице имеются статьи, написанные группой авторов.

В дальнейшем была добавлена еще одна таблица, содержащая биографические данные авторов AUTHORS:

NAME VARCHAR NOT NULL, BIRTH DATE NOT NULL, DEATH DATE DEFAULT NULL,
ID INTEGER PRIMARY KEY;

Во избежание путаницы и дублирования отдельных полей следует привести указанные таблицы к одной из нормальных форм.

После недолгих раздумий, Вася принял решение реорганизовать таблицу ARTICLES:

TITLE VARCHAR NOT NULL, YEAR INTEGER NOT NULL,
ID INTEGER PRIMARY KEY;

В свою очередь, связи между авторами и их публикациями он намеревается вынести в отдельную таблицу, содержащую привязку к AUTHORS.ID и ARTICLES.ID.

Проблемы возникли после того, как он обнаружил, что поле NAME у разных авторов может совпадать.

Чтобы разобраться в данной ситуации Вася тщательно изучил имеющийся свод правил и обнаружил следующие утверждения:

- авторы могут публиковать свои работы только по наступлении 18-летия;
- в некоторых случаях также возможна посмертная публикация статьи, но не позднее 100 дней со дня смерти автора.

Однако этого также может оказаться недостаточно, т.к. годы жизни одноименных авторов могут перекрываться.
В этом случае следует определить всех возможных авторов для каждой отдельной работы.

Для того, чтобы помочь Васе, от Вас требуется написать SQL-запрос.
Результат запроса должен представлять собой объединение (JOIN) таблиц AUTHORS и ARTICLES,
где первый столбец будет содержать AUTHORS.ID,
второй и третий столбцы — ARTICLES.TITLE и ARTICLES.YEAR, соответственно;
а последний столбец принимает одно из двух значений:
'?' — если авторство находится под вопросом;
'+' — если оно достоверно установлено.

Статьи, не принадлежащие конкретному автору, а также авторы, не имеющие ни одной статьи, в выборку не добавляются.

Сортировка производится по всем имеющимся столбцам в порядке их следования.

Решение следует представить в виде текстового файла, содержащего единственный SQL-запрос.

Формат входного файла

Пример тестовой БД.

Ограничения

Полагается, что для работы с базой данных используется SQLite3.

Значения типа DATE задаются в виде строк, имеющих следующий формат: YYYY-MM-DD


0.097s 0.023s 17