Pierwszy i ostatni rekord z tabeli PL/SQL

0

Hej, mam proste zadanie. Muszę przypisać do zmiennych i wyświetlić pierwsze i ostatnie nazwiska uczniów. Nie wiem jak to zrobić w PL/SQL.

DECLARE 
    x VARCHAR;
    y VARCHAR;
BEGIN
    BEGIN
        SELECT Nazwisko INTO x FROM
        (SELECT Nazwisko INTO x FROM Uczen ORDER BY Nazwisko)
        WHERE ROWNUM <=1;
        dbms_output.put_line(x);
    END;
    BEGIN
        SELECT Nazwisko INTO y FROM
        (SELECT Nazwisko INTO y FROM Uczen ORDER BY Nazwisko DESC)
        WHERE ROWNUM <=1;
        dbms_output.put_line(y);
    END;
END;
2

Może union z dwóch select-òw.

0

Nie wiem jak z unionem, ale tak wchodzi:

DECLARE
    nazwisko_ucznia_min VARCHAR2(20);
    nazwisko_ucznia_max VARCHAR2(20);
BEGIN
    SELECT MAX(NAZWISKO) INTO nazwisko_ucznia_max FROM UCZEN;
    DBMS_OUTPUT.PUT_LINE('Ostatnie nazwisko: ' || nazwisko_ucznia_max);
    SELECT MIN(NAZWISKO) INTO nazwisko_ucznia_min FROM UCZEN;
    DBMS_OUTPUT.PUT_LINE('Pierwsze nazwisko: ' || nazwisko_ucznia_min);
END;
1

Ale max nazwisko na pewno daje ostatni wiersz czy tylko trafiłeś? Co będzie jak będziesz miał nazwiska w takiej kolejności?
BBB
CCC
DDD
AAA

0
SELECT NAZWISKO FROM UCZEN

wyświetla uczniów w poniższej kolejności. Nie są dodani alfabetycznie, więc chyba jest ok.

TRUSKAWKA
MALINA
CZERESNIA
SLIWKA
JABLKO
WISNIA
PORZECZKA

0

Ostatni wiersz mi się kojarzy z jakimś o najwyższym id.
Ale jak chodzi o posortowane alfabetycznie. Może zwykły order by i rownum jak już zacząłeś. A uninio do złączenia wierszy.

0

Trochę niejasno się wyraziłem. Tak dokładnie brzmi treść zadania:
Napisz program, który przypisze do zmiennych pierwsze i ostatnie alfabetycznie nazwisko ucznia, a potem je wypisze.

2

Nie musisz pobierać w 2 zapytaniach:

DECLARE
    nazwisko_ucznia_min VARCHAR2(20);
    nazwisko_ucznia_max VARCHAR2(20);
BEGIN
    SELECT MAX(NAZWISKO),MIN(NAZWISKO) INTO nazwisko_ucznia_max,nazwisko_ucznia_min FROM UCZEN;
    DBMS_OUTPUT.PUT_LINE('Ostatnie nazwisko: ' || nazwisko_ucznia_max);
    DBMS_OUTPUT.PUT_LINE('Pierwsze nazwisko: ' || nazwisko_ucznia_min);
END;

1 użytkowników online, w tym zalogowanych: 0, gości: 1