Проблема с запросами
Чтобы решить эту задачу, вам придется реализовать упрощенный SQL сервер, который смог бы выполнять некоторые запросы. Входной файл будет состоять, собственно, из запросов. Запросы будут одного из следующих трех типов: CREATE TABLE, INSERT, SELECT.
Запросы имеют следующий вид:
CREATE TABLE <имя таблицы> (<список имен полей>);
INSERT INTO <имя таблицы> VALUES (<список констант>);
SELECT <список специализированных имен полей> FROM <список таблиц> WHERE <логическое выражение>;
Заметьте, что форматы запросов будут в точности такими (например, часть WHERE для SELECT-запроса не может быть опущена). Ключевые слова языка не чувствительны к регистру.
Имена таблиц и полей - это непустые последовательности маленьких букв латинского алфавита. Под константами понимаются строковые константы, которые записываются в одинарных кавычках, например: 'constant'. Сами константы, также как имена таблиц и полей, состоят из маленьких латинских букв. Имена таблиц, колонок и значения констант будут не длиннее 30 символов. Ни одно имя таблицы или колонки не будет совпадать ни с одним из ключевых слов языка: CREATE, TABLE, INSERT, INTO, VALUES, SELECT, FROM, WHERE.
Список в указанной выше записи - это перечисление элементов списка через запятую (см. пример входного файла).
Под специализированным именем поля понимается запись <имя таблицы>.<имя поля таблицы>.
Под логическим выражением понимается одно или несколько сравнений (проверок на равенство) полей таблиц, из которых производится выборка, заданных специализированными именами полей, разделенными знаками логических операций AND или OR. Вычислять логическое выражение следует, учитывая приоритет этих операций (AND имеет больший приоритет). Для пояснения формата входных данных см. пример входного файла.
Вашей задачей будет на каждый запрос вида SELECT вывести результирующую таблицу, причем ее строки должны идти в лексикографическом порядке. Будем говорить, что одна строка такой таблицы лексикографически меньше другой строки, если в первых нескольких колонках в этих строках идут одинаковые значения, а в последующей колонке значение в первой строке меньше, чем значение во второй строке (имеется в виду лексикографическое сравнение строк).
Гарантируется, что все запросы корректны, то есть удовлетворяют описанным выше правилам, причем все используемые в запросах имена таблиц, полей и специализированные имена полей будут определены запросом типа CREATE TABLE до запроса, в котором они будут использоваться. Таблицы с одинаковыми именами создаваться не будут. Каждая таблица содержит хотя бы одно поле.
Входные данные
Входной файл будет содержать последовательность запросов упрощенного языка SQL, описанного в условии. Каждый запрос будет в отдельной строке и каждая строка будет содержать запрос. Ни в одну таблицу не будет вставлено более 20 строк (с по
Входной файл будет содержать последовательность запросов упрощенного языка SQL, описанного в условии. Каждый запрос будет в отдельной строке и каждая строка будет содержать запрос. Ни в одну таблицу не будет вставлено более 20 строк (с помощью команды INSERT). Каждый запрос типа SELECT будет обращаться не более, чем к трем таблицам, а в рамках одного такого запроса в списке таблиц не будет дважды встречаться одна и та же таблица.
Выходные данные
Для каждого запроса типа SELECT вам необходимо вывести результирующую таблицу. Каждая строка результирующей таблицы должна находиться на отдельной строке выходного файла и должна состоять из значений полей, перечисленных в первой части SELECT запроса, разделенных одним пробелом. После каждой таблицы необходимо вывести строку, которая будет содержать три символа '-' (то есть '—').
мощью команды INSERT). Каждый запрос типа SELECT будет обращаться не более, чем к трем таблицам, а в рамках одного такого запроса в списке таблиц не будет дважды встречаться одна и та же таблица.
Для каждого запроса типа SELECT вам необходимо вывести результирующую таблицу. Каждая строка результирующей таблицы должна находиться на отдельной строке выходного файла и должна состоять из значений полей, перечисленных в первой части SELECT запроса, разделенных одним пробелом. После каждой таблицы необходимо вывести строку, которая будет содержать три символа '-' (то есть '—').