Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.06.2013
Сообщений: 48
1

Вывести последнюю и k-ю запись

21.05.2014, 08:21. Показов 2510. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал запрос который выводит первую запись!!!! Необходимо вывести последнюю и k-ю запись!!!!!

что нужно добавить!!!! ????

Oracle 11 SQL
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
SET SERVEROUTPUT ON  
DECLARE
knig_id VARCHAR2(4);
id_cind_book VARCHAR2(4);
name_book   VARCHAR2 (100);
name_autor VARCHAR2(100);
cena    NUMBER;
kol_vo  VARCHAR2(4);
dop_inf VARCHAR2(100);
CURSOR cur IS
SELECT *
FROM bibli.KNIGI;
 
BEGIN
OPEN cur;
FETCH cur  INTO knig_id, id_cind_book, name_book, name_autor, cena, kol_vo, dop_inf;
DBMS_OUTPUT.enable();
DBMS_OUTPUT.PUT_LINE( 'ID:'|| knig_id);
DBMS_OUTPUT.PUT_LINE( 'Код жанра: ' || id_cind_book );
DBMS_OUTPUT.PUT_LINE( 'Название книги: ' || name_book);
DBMS_OUTPUT.PUT_LINE( 'Автор: ' || name_autor);
DBMS_OUTPUT.PUT_LINE( 'Цена: ' || cena);
DBMS_OUTPUT.PUT_LINE( 'Количество: ' || kol_vo);
DBMS_OUTPUT.PUT_LINE( 'Дополнительная информация: ' || dop_inf);
 
CLOSE cur;
END;
Добавлено через 2 часа 10 минут
Пробую через цикл!!! Выводит те поля где id>13
Все работает, но только проблема в том что она выводит пустые поля!!!!
Oracle 11 SQL
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
SET SERVEROUTPUT ON 
DECLARE
knig_id VARCHAR2(4);
id_cind_book VARCHAR2(4);
name_book   VARCHAR2 (100);
name_autor VARCHAR2(100);
cena    NUMBER;
kol_vo  VARCHAR2(4);
dop_inf VARCHAR2(100);
CURSOR addresses_c IS
SELECT * FROM bibli.knigi
WHERE knig_id >13;
BEGIN
 
 
FOR rec IN addresses_c LOOP
 
DBMS_OUTPUT.PUT_LINE( 'ID:'|| knig_id);
DBMS_OUTPUT.PUT_LINE( 'Код жанра: ' || id_cind_book );
DBMS_OUTPUT.PUT_LINE( 'Название книги: ' || name_book);
DBMS_OUTPUT.PUT_LINE( 'Автор: ' || name_autor);
DBMS_OUTPUT.PUT_LINE( 'Цена: ' || cena);
DBMS_OUTPUT.PUT_LINE( 'Количество: ' || kol_vo);
DBMS_OUTPUT.PUT_LINE( 'Дополнительная информация: ' || dop_inf);
 
END LOOP;
END;
Выводит:
ID:
Код жанра:
Название книги:
Автор:
Цена:
Количество:
Дополнительная информация:
ID:
Код жанра:
Название книги:
Автор:
Цена:
Количество:
Дополнительная информация:

Почему он выводит так? чего не хватает!!!
Хотелось бы что бы он выводил как на картинке !
Миниатюры
Вывести последнюю и k-ю запись  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2014, 08:21
Ответы с готовыми решениями:

вывести последнюю запись
В таблице существует такая запись: ФИО1 дата операция (приостановленно) ФИО1 дата операция...

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

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

Как вывести самую последнюю запись при реляции HasMany
в таблице Таскс хранятся Задачи, в таблице Таймс хранятся время их выполнения. Ранее для одной ...

9
25 / 25 / 10
Регистрация: 20.09.2009
Сообщений: 110
21.05.2014, 09:02 2
а ты уверен что в твоей таблице есть данные удовлетворяющие условию запроса
Цитата Сообщение от Дмитрий3Б Посмотреть сообщение
SELECT * FROM bibli.knigi
WHERE knig_id >13
0
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
21.05.2014, 09:02 3
А какая связь между knig_id и курсором или rec?
0
25 / 25 / 10
Регистрация: 20.09.2009
Сообщений: 110
21.05.2014, 09:03 4
хотя я бред написал. если бы данных не было. цикл не выполнился бы
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
21.05.2014, 10:07 5
Цитата Сообщение от Дмитрий3Б Посмотреть сообщение
Почему он выводит так? чего не хватает!!!
Во втором варианте ты выводишь не значения полей строки курсора, а значения переменных, которым не присвоены значения. Что запросил, то и получил.
0
0 / 0 / 0
Регистрация: 06.06.2013
Сообщений: 48
21.05.2014, 10:19  [ТС] 6
Ну я почему то так сразу и подумал!!! Но как мне сделать что бы эти значения взялись из моей таблицы?
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
21.05.2014, 11:16 7
Лучший ответ Сообщение было отмечено Дмитрий3Б как решение

Решение

Цитата Сообщение от Дмитрий3Б Посмотреть сообщение
как мне сделать что бы эти значения взялись из моей таблицы
Запись FOR rec означает, что на каждом шаге цикла очередная строка выбирается в RECORD rec с именами полей, которые соответствуют именам в SELECT. Соответственно и надо обращаться к полям record, т.е. rec.id (если поле называется id)
1
0 / 0 / 0
Регистрация: 06.06.2013
Сообщений: 48
21.05.2014, 14:37  [ТС] 8
Спасибо за помощь Grossmeister!!!!! ) Все работает !

Добавлено через 4 минуты
Остается теперь вывести последнюю строку!!! Можно это сделать используя этот же код ?
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
21.05.2014, 14:47 9
Цитата Сообщение от Дмитрий3Б
Остается теперь вывести последнюю строку!!! Можно это сделать используя этот же код ?
Ну-у-у, это обычная задачка по программированию, даже без БД. Например, на каждом шаге цикла сохраняй значения в переменные. После выхода из цикла в переменных останется последнее значение.
0
0 / 0 / 0
Регистрация: 06.06.2013
Сообщений: 48
21.05.2014, 14:54  [ТС] 10
Я сделал следующим образом. написал условие что бы выводил строку с максимальным id.
у меня в таблице 15 записей, но он почему то выводит 9.
Oracle 11 SQL
1
WHERE knig_id = (SELECT MAX(knig_id)FROM bibli.knigi);
0
21.05.2014, 14:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2014, 14:54
Помогаю со студенческими работами здесь

Как вывести самую последнюю запись при реляции HasMany
в таблице Таскс хранятся Задачи, в таблице Таймс хранятся время их выполнения. Ранее для одной ...

Поменять любую запись местами с последней и удалить последнюю запись.
Помогите пожалуйста! Мне для программы, которая использует records (записи), нужно написать...

Прочитать последнюю запись в БД
Есть БД (sql). В БД есть поле NM. Необходимо прочесть последнюю запись, добавить к ней + 1, и...

Не попадаю на последнюю запись.
Программно запускаю две сохраненные процедуры: 1. Insert .... проходит нормально. 2. SELECT Top 1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru