|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
Друзья , помогите пожалуйста в решении данной задачи. Создал базу данных, необходимо для неё написать процедуру, выводящую список экспонатов автора, у которого име-ется не менее пяти работ. Если таких авторов несколько, то вывести их фами-лии и количество экспонатов. Очень надо. Среда разработки APEX oracle. Спасибо CREATE TABLE Авторы (Код_автора NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, Фамилия VARCHAR2(40) NOT NULL, Имя VARCHAR2(40) NOT NULL, Дата_рождения DATE NOT NULL); CREATE TABLE Виды_экспозиций ( Код_вида NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, Наименование VARCHAR2(50) NOT NULL); CREATE TABLE Виды_жанров ( Код_жанра NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, Наименование VARCHAR2(100) NOT NULL); CREATE TABLE Экспонаты ( Код_экспоната NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, Название VARCHAR (60) NOT NULL, Тип VARCHAR (60) NOT NULL, Ценность NUMBER (9,2) NOT NULL, Известность VARCHAR (60) NOT NULL, Код_жанра NUMBER NOT NULL, FOREIGN KEY (Код_жанра) REFERENCES Виды_жанров ); CREATE TABLE Проведение_выставки ( Код_экспозиции NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, ДатаВремя_проведения DATE NOT NULL, Код_автора NUMBER NOT NULL, Код_вида NUMBER NOT NULL, Код_экспоната NUMBER NOT NULL, FOREIGN KEY (Код_автора) REFERENCES Авторы, FOREIGN KEY (Код_вида) REFERENCES Виды_экспозиций, FOREIGN KEY (Код_экспоната) REFERENCES Экспонаты ); ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2021, 23:10 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
xxxxALEKSEYxxxx, СОЗДАЛ ПРОЦЕДУРУ , КОТОРАЯ ВЫВОДИТ СПИСОК АВТОРОВ И ЭКСПОНАТОВ. Подскажите пожалуйста как посчитать общее кол-во работ автора, знаю что за общий подсчёт отвечает функция count, но как её применить в процедуре не имею понятия. заранее спасибо create or replace procedure list_of_exhibits is cursor AVTORS_CUR is select фамилия,Название from ПРОВЕДЕНИЕ_ВЫСТАВКИ join АВТОРЫ on Авторы.Код_автора = ПРОВЕДЕНИЕ_ВЫСТАВКИ.Код_автора join Экспонаты on Экспонаты.Код_экспоната = ПРОВЕДЕНИЕ_ВЫСТАВКИ.Код_экспоната; begin for AVTORS_CYCLE in AVTORS_CUR loop DBMS_OUTPUT.PUT_LINE ('Автор:'||AVTORS_CYCLE.фамилия||' - Экспонат:'|| AVTORS_CYCLE.Название); END LOOP; END; / ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 05:07 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
xxxxALEKSEYxxxx, 1 экспонат - 1 работа? ps ... group by фамилия,Название having count(*)>4 .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 10:20 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
Stax, Реализовал, но выдаёт ошибки. Может подскажите почему? create or replace procedure list_of_exhibits is cursor AVTORS_CUR is SELECT фамилия, count(КОД_ЭКСПОНАТА) FROM ПРОВЕДЕНИЕ_ВЫСТАВКИ join АВТОРЫ on Авторы.Код_автора = ПРОВЕДЕНИЕ_ВЫСТАВКИ.Код_автора GROUP BY АВТОРЫ.фамилия having count(*)>1 begin for AVTORS_CYCLE in AVTORS_CUR loop DBMS_OUTPUT.PUT_LINE ('Автор:'||AVTORS_CYCLE.фамилия||' - Экспонат:'|| AVTORS_CYCLE.count(КОД_ЭКСПОНАТА)); END LOOP; end; / ОШИБКИ Error at line 10: PL/SQL: ORA-00933: SQL command not properly ended Error at line 16: PLS-00103: Encountered the symbol "END" when expecting one of the following: begin function pragma procedure subtype type <an identifier> <a double-quoted delimited-identifier> current cursor delete exists prior Error at line 5: PL/SQL: SQL Statement ignored ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 13:35 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
xxxxALEKSEYxxxx, оператор заканчивается ; ps count(КОД_ЭКСПОНАТА) добавить алиас, напр количество_экспонатов зыы пропало Название? ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 13:43 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
Stax, Да, название пропало, потому что незнаю как его реализовать. ---------------------------------------------------------------------------------------------------------------------------------------------------------- можно пока без название. Что указывать здесь(' - Кол_во_работ_автора:'|| AVTORS_CYCLE.count(КОД_ЭКСПОНАТА)); подскажите пожалуйста create or replace procedure list_of_exhibits is cursor AVTORS_CUR is SELECT фамилия, count(КОД_ЭКСПОНАТА) "Кол_во_работ_автора" FROM ПРОВЕДЕНИЕ_ВЫСТАВКИ join АВТОРЫ on Авторы.Код_автора = ПРОВЕДЕНИЕ_ВЫСТАВКИ.Код_автора GROUP BY АВТОРЫ.фамилия having count(*)>1 begin for AVTORS_CYCLE in AVTORS_CUR loop DBMS_OUTPUT.PUT_LINE ('Автор:'||AVTORS_CYCLE.фамилия||' - Кол_во_работ_автора:'|| AVTORS_CYCLE.count(КОД_ЭКСПОНАТА)); END LOOP; end; / ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 13:54 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
xxxxALEKSEYxxxx, Допишите пожалуйста ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 13:56 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
xxxxALEKSEYxxxx, create or replace procedure list_of_exhibits is cursor AVTORS_CUR is SELECT фамилия, count(КОД_ЭКСПОНАТА) "Кол_во_работ_автора" FROM ПРОВЕДЕНИЕ_ВЫСТАВКИ join АВТОРЫ on Авторы.Код_автора = ПРОВЕДЕНИЕ_ВЫСТАВКИ.Код_автора GROUP BY АВТОРЫ.фамилия having count(*)>1; begin for AVTORS_CYCLE in AVTORS_CUR loop DBMS_OUTPUT.PUT_LINE ('Автор:'||AVTORS_CYCLE.фамилия||' - Кол_во_работ_автора:'|| AVTORS_CYCLE.count(КОД_ЭКСПОНАТА)); END LOOP; end; / ------------------------------------------------------------------------------------------------------------------- Error at line 14: PL/SQL: Statement ignored Error at line 15: PLS-00302: component 'COUNT' must be declared ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 14:07 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
необходимо для неё написать процедуру, выводящую Уже стопиццот раз спрашивали - зачем "процедура, выводящая" вместо простого запроса? Научиться писать PL/SQL блок c dbms_output? автора, у которого имеется не менее пяти работ По вашим данным ни у одного автора нет пяти работ. Код: plsql 1. 2.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 14:43 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
используйте алиас DBMS_OUTPUT.PUT_LINE ('Автор:'||AVTORS_CYCLE.фамилия||' - Кол_во_работ_автора:'|| AVTORS_CYCLE."Кол_во_работ_автора"); .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 14:45 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
Stax, огромное вам спасибо. дай бог вам здоровья ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 15:00 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
dmdmdm, огромное вам спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 15:03 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
xxxxALEKSEYxxxx, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56.
ps set transaction read only; .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 15:52 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
Stax, Спасибо огромное, очень помогли. Вы настоящий профессионал!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 17:23 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
Здравствуй. Помогите пожалуйста для представленной БД создать функцию, которая возвращает количество выставок в задан-ном месяце (году). Очень надо, самому разбираться как это реализовать нет времени. Буду очень благодарен. Заранее всем спасибо. среда разработка APEX oracle. -------------------------------------------------------------------------------------------------------------------------------------------- CREATE TABLE Авторы (Код_автора NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, Фамилия VARCHAR2(40) NOT NULL, Имя VARCHAR2(40) NOT NULL, Дата_рождения DATE NOT NULL); CREATE TABLE Виды_экспозиций ( Код_вида NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, Наименование VARCHAR2(50) NOT NULL); CREATE TABLE Виды_жанров ( Код_жанра NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, Наименование VARCHAR2(100) NOT NULL); CREATE TABLE Экспонаты ( Код_экспоната NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, Название VARCHAR (60) NOT NULL, Тип VARCHAR (60) NOT NULL, Ценность NUMBER (9,2) NOT NULL, Известность VARCHAR (60) NOT NULL, Код_жанра NUMBER NOT NULL, FOREIGN KEY (Код_жанра) REFERENCES Виды_жанров ); CREATE TABLE Проведение_выставки ( Код_экспозиции NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, ДатаВремя_проведения DATE NOT NULL, Код_автора NUMBER NOT NULL, Код_вида NUMBER NOT NULL, Код_экспоната NUMBER NOT NULL, FOREIGN KEY (Код_автора) REFERENCES Авторы, FOREIGN KEY (Код_вида) REFERENCES Виды_экспозиций, FOREIGN KEY (Код_экспоната) REFERENCES Экспонаты ); -------------------------------------------------------------------------------------------------------------------------------------------- ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2021, 15:02 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
xxxxALEKSEYxxxxПомогите пожалуйста для представленной БД создать функцию, которая возвращает количество Такая функция уже есть, называется COUNT(). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2021, 15:05 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Если бы всё это было так просто). Мне необходимо это реализовать в такой функции: [CREATE [OR REPLACE ] ] FUNCTION имя_функции[ (параметр1 [ , параметр2 ]... ) ] RETURN тип_возвращаемого_результата [ AUTHID { DEFINER | CURRENT_USER } ] [ PARALLEL_ENABLE ] [DETERMINISTIC] [ PIPELINED ] {IS | AS} [ PRAGMA AUTONOMOUS_TRANSACTION; ] [ локальные объявления переменных] BEGIN Исполняемые_операторы [ EXCEPTION обработка_ошибок] END [ имя_функции]; ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2021, 15:08 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
РЕБЯТА , помогите пожалуйста !!! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2021, 19:06 |
|
APEX oracle. Базы данных sql.
|
|||
---|---|---|---|
#18+
xxxxALEKSEYxxxx, автор... создать функцию, которая возвращает количество выставок в задан-ном месяце (году). ... Очень надо, самому разбираться как это реализовать нет времени. ... А ждать полдня, когда дядя решит время есть? Мессир, PL/SQL References 8 PL/SQL Subprograms Extract (datetime) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
памятка: HOWTO :: Как правильно задавать вопросы Как мне оформить свое сообщение? Студентам, желающим помощи 1) Полная постановка задачи (без сокращений) 2) Подготовьте тестовые данные, лучше в виде with пример (не ваш случай) в конце 3) Покажите что сделали, что получили, без сокращений. ( лучше не в виде screenshot) 4) используйте Тэги, читать код без них неудобно, правильно оформляйте сообщение Пример подготовленных данных, запроса и вывода. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2021, 20:45 |
|
|
start [/forum/topic.php?fid=52&msg=40121655&tid=1879663]: |
0ms |
get settings: |
19ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
36ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
351ms |
get tp. blocked users: |
0ms |
others: | 358ms |
total: | 776ms |
0 / 0 |