Код SQL в вопросе использует stu_sex AS "Sex"
, и позже вы используете запрос:
select * from Lubeina_view where sex = 'M'
, который не удался, но если вы используете:
select * from Lubeina_view where "Sex" = 'M'
, это будет работать.
Проблема, которую я считаю, заключается в чувствительности к регистру.В Oracle, если вы определяете имя столбца с кавычками, оно становится чувствительным к регистру.Я настоятельно рекомендую вам не использовать пробелы в именах столбцов и НЕ использовать кавычки.
CREATE VIEW Lubeina_view
AS
WITH counter (id, total)
AS (
SELECT
stu.studentid AS ID
, COUNT( stu.studentid ) AS Count_of_Placement
FROM tn.student stu
JOIN tn.event_result e ON stu.studentid = e.studentid
WHERE finalplacement = 1
GROUP BY
stu.studentid
)
SELECT
stu_firstname AS First_Name
, stu_lastname AS Last_Name
, stu_sex AS Sex
, stu_phonenumber AS Phone_Number
, total AS Count_of_Placement
FROM tn.student S
JOIN counter ON counter.id = s.studentid
;
Теперь вы можете использовать where sex = 'M'
или where Sex = 'M'
или where sEx = 'M'
Также призываю васНЕ включать order by
в представлениях.
CREATE TABLE student(
stu_firstname VARCHAR(7) NOT NULL PRIMARY KEY
,stu_lastname VARCHAR(5) NOT NULL
,stu_sex VARCHAR(2) NOT NULL
,stu_phonenumber VARCHAR(9) NOT NULL
,total INTEGER NOT NULL
);
INSERT INTO student(stu_firstname,stu_lastname,stu_sex,stu_phonenumber,total) VALUES ('fiendis','plan','M','555 1234',100);
CREATE VIEW Lubeina_view
AS
SELECT
stu_firstname AS First_Name
, stu_lastname AS Last_Name
, stu_sex AS "Sex"
, stu_phonenumber AS Phone_Number
, total AS Count_of_Placement
FROM student
;
select
*
from Lubeina_view
where sex = 'M'
;
ORA-00904: "SEX": invalid identifier
select
*
from Lubeina_view
where "Sex" = 'M'
;
FIRST_NAME | LAST_NAME | Sex | PHONE_NUMBER | COUNT_OF_PLACEMENT
:--------- | :-------- | :-- | :----------- | -----------------:
fiendis | plan | M | 555 1234 | 100
CREATE VIEW Lubeina_view_2
AS
SELECT
stu_firstname AS First_Name
, stu_lastname AS Last_Name
, stu_sex AS Sex
, stu_phonenumber AS Phone_Number
, total AS Count_of_Placement
FROM student
;
select
*
from Lubeina_view_2
where seX = 'M'
;
FIRST_NAME | LAST_NAME | SEX | PHONE_NUMBER | COUNT_OF_PLACEMENT
:--------- | :-------- | :-- | :----------- | -----------------:
fiendis | plan | M | 555 1234 | 100
select
*
from Lubeina_view_2
where sEx = 'M'
;
FIRST_NAME | LAST_NAME | SEX | PHONE_NUMBER | COUNT_OF_PLACEMENT
:--------- | :-------- | :-- | :----------- | -----------------:
fiendis | plan | M | 555 1234 | 100
дБ <> скрипка здесь