1

Temat: uzupełnianie tabeli wartościami z przedziału

Witam!
Mam takie zadanie z którym niemoge sobie poradzić


A.Skonstruuj kod SQL, który pozwoli uzupełnić tabelę numbers (patrz wskazówka poniżej) wartościami ciągu od 0 do 9999.


Załóżmy, że dana jest tabela numbers o następującej strukturze:
CREATE TABLE dziekanat.numbers (number INTEGER PRIMARY KEY);
Aby wygenerować ciąg wartości n...m tworzmy dodatkową strukturę w postaci tabeli digits:
CREATE TEMPORARY TABLE digits (digit CHAR(1) PRIMARY KEY);*
Następnie uzupełniamy tabelę digits wartościami cyfr od 0 do 9:
INSERT INTO digits VALUES ('0'), ('1'), ('2'), ('3'), ('4'), ('5'), ('6'), ('7'), ('8'), ('9');

W kolejnym kroku uzupełniamy tabelę numbers poprzez...?

Bardzo prosze o pomoc

Ostatnio edytowany przez noob (2013-09-02 20:55:07)

2

Odp: uzupełnianie tabeli wartościami z przedziału

insert into dziekanat.numbers (number) select (d1.digit||d2.digit||d3.digit||d4.digit)::int from digits d1,digits d2,digits d3,digits d4

3

Odp: uzupełnianie tabeli wartościami z przedziału

insert into dziekanat.numbers (number) select generate_series(0,9999);

--
The best thing about modern society is how easy it is to avoid contact with it.

4

Odp: uzupełnianie tabeli wartościami z przedziału

Mógłbym prosić małe wyjaśnienie, nie bardzo rozumiem jak działa zapytania michala.
To chyba działa że łączy każde z każdym ale skąd 1 a nie 01

Ostatnio edytowany przez noob (2013-09-03 20:44:34)

5

Odp: uzupełnianie tabeli wartościami z przedziału

Tak,łącze ciągi każdy z każdym ale na końcu koncertuje ciąg znaków na liczbę służy fo tego klauzula ::int lub funkcja CAST

Ostatnio edytowany przez c_michal (2013-09-03 21:52:21)

6

Odp: uzupełnianie tabeli wartościami z przedziału

a nie lepiej było by zastosować CAST np. tak
cast((d1.digit||d2.digit||d3.digit||d4.digit) as int)

7

Odp: uzupełnianie tabeli wartościami z przedziału

Ją stosuję obie formy ale pierwsza jest dla mnie osobiście bardziej intuicyjna

8

Odp: uzupełnianie tabeli wartościami z przedziału

dzięki za pomoc