Создание нового атрибута в базе данных Oracle из двух других атрибутов - PullRequest
0 голосов
/ 26 октября 2018

У меня есть таблица классов, которая выглядит следующим образом:

Classes(classid, dept_code, course#, sect#, year, semester, limit, class_size, room, TA_B#)

Вопрос: Найдите classid, dept_code и course # каждого класса бакалавриата (т.е. курс # <500), который был предложен вВесна 2017. Для каждого такого класса также укажите количество доступных мест (рассчитывается по лимиту - class_size) под заголовком «seat_available». </p>

Я попробовал этот простой подход:

select classes.classid, classes.dept_code, classes.course#,
classes.limit-classes.class_size as'seats_available'
from classes
where limit>class_size and year='2017' and semester='Spring'and course# < 500;

0 Но я получаю сообщение об ошибке:

ERROR at line 1:
ORA-00923: FROM keyword not found where expected

Чего мне не хватает?Эта ошибка возникнет, если я удалю этот код строки: classes.limit-classes.class_size as'seats_available'

Я использую базу данных Oracle

1 Ответ

0 голосов
/ 26 октября 2018

В стандарте SQL идентификаторы должны быть заключены в двойные кавычки ("). И база данных Oracle соответствует стандарту там.

Одинарные кавычки (') предназначены для символьных констант, например как и в semester='Spring', они могут , а не использоваться для идентификаторов, таких как имена столбцов, имена таблиц или псевдонимы столбцов.

Так что вам нужно использовать:

classes.limit-classes.class_size as <b>"seats_available"</b>

Хотя на самом деле вам не нужны двойные кавычки, поскольку ваш идентификатор не содержит недопустимых символов, поэтому

classes.limit-classes.class_size as seats_available

будет работать так же хорошо


Не связано, но: числа должны не заключаться в одинарные кавычки 2017 - это числовая константа, '2017' - строковая константа. Поэтому вы должны использовать where year = 2017 вместо

...