[PostgreSQL]
Last Updated: Sep 08 2017 09:53, Started by
colombo2003
, Aug 02 2017 12:52
·
0
#1
Posted 02 August 2017 - 12:52
Am o tabela noua, in care pe o coloana trebuie sa am data. Intregistrarile din acesta tabela ar trebuie sa mearga pana la 3 ani in urma.
(pentru unele inregistrari (chiar si din urma, dar mai ales pentru cele de la data curenta in viitor), pot avea si un comentariu) Exista vreo modalitate prin care pot evita introducerea manuala a fiecarei zile, pe ultimii 3 ani (~ 1200 inregistrari)? Daca da, cum? Multumesc. |
#2
Posted 02 August 2017 - 12:59
Poți pune orice dată la orice înregistrare făra dată? Caz în care scrii un program care introduce orice dată? Sau trebuie să urmezi un algoritm? Caz în care poți să scrii un program care execută algoritmul respectiv? Sau ai altă situație?
|
#3
Posted 02 August 2017 - 13:26
Intr-o aplicatie de tip calendar, cand se face click pe o data, intr-o pagina noua se afiseaza niste evenimente (daca exista); evenimente ce vin din baza, dar intr-o alta tabela.
In aceasta pagina noua, mai trebuie un camp, unde pot adauga si text (ca si comentariu). Aceste comentarii, impreauna cu data, se vor stoca intr-o tabela noua. Ideea era cum pot sa fac (daca se poate face), ca sa evit introducerea manuala, sa generez sa zicem ca prima inregistrare din baza sa fie 1 ianuarie 2014, si sa se incrementeze pana la data curenta. Exista unele evenimente trecute, care pot avea si comentarii (informatia exista si scriptic, in niste procese verbale); alte evenimete (trecute sau viitoare) nu (si atunci ma gandeam sa apara in baza cu "-". Sper ca acum e mai clar ce se doreste. Deci, se poate face asa ceva sau nu, si ma apuc muncitoreste si le introduce manual? |
#4
Posted 02 August 2017 - 13:32
colombo2003, on 02 august 2017 - 13:26, said:
Ideea era cum pot sa fac (daca se poate face), ca sa evit introducerea manuala, sa generez sa zicem ca prima inregistrare din baza sa fie 1 ianuarie 2014, si sa se incrementeze pana la data curenta. Edited by neagu_laurentiu, 02 August 2017 - 13:36. |
#5
Posted 02 August 2017 - 13:37
Nu am instalat postgres dar poate te ajuta : https://stackoverflo...s-into-database
|
#6
Posted 02 August 2017 - 13:47
Evenimentele afisate (pentru data aleasa pe care s-a facut click) vin dintr-o alta tabela (in care am informatii despre descrierea evenimetnului, responsabil, ora etc si un id de eveniment).
Comentariul (de tip text; ca un fel de observatii daca vreti) poate sa fie (conform proces verbal) sa nu (caz in care sa se afiseze "-"). De fapt valoarea default este "-" si daca dau click pe un buton de Edit (pentru o zi aleasa (care poate fi si din trecut)) sa pot introduce textul si la salvare sa se duca in tabela noua (la care ma gandeam) la ziua respectiva (prin update). Dar, revin, trebuie ca aceasta table noua sa o fac cu date de pe ultimii trei ani in urma (~ 1200 inregistrari). Si sa stau sa le introduc manual, nu e vorba de lene, dar parca... Cu alte cuvine, daca se poate, as vrea sa mi se faca automat un insert in baza, incepand cu 1 ianuarie 2014 si comentariu afferent "-" (id=1), apoi incrementat (id=2 2 ianuarie 2014 si "-", apoi id=3 3 ianuarie 2014 si "-" si tot asa, pana ajung in prezent. |
#7
Posted 02 August 2017 - 13:50
Ce nu e clar din comentariul meu de mai sus? Ai datele, ai un criteriu dupa care asociezi data cu pricina, poti folosi cursorul dau update-ul (aici in functie de criteriul tau). Nu se pune problema de manual!
Edited by neagu_laurentiu, 02 August 2017 - 13:51. |
#8
Posted 02 August 2017 - 18:07
data o poti obtine cu formula asta : '2014-01-01'::date + (id - 1) * interval '1 day' . ce faci cu ea acum depinde de tine
|
#9
Posted 08 September 2017 - 09:53
colombo2003, on 02 august 2017 - 12:52, said:
Exista vreo modalitate prin care pot evita introducerea manuala a fiecarei zile, pe ultimii 3 ani (~ 1200 inregistrari)? Daca da, cum? Multumesc. Pentru postgresqk vezi aici: https://www.postgres...ons-window.html In cazul tau trebuie sa foloesesti functia LAG in combinatie cu partition-order-by, astfel : lag ( <column_name>, 1, default ) over partition ( <column_name> ) order by (<column_name>) adica valorea curenta se calculeaza pe baza valori precedente, pe care o incrementezi cu un anumit pas. Valoare 1 reprezinta cu cate randuri in spate sa te duci fata de valoarea curenta si nu cu cat sa incrementezi. \ Eu asa am facut cand am avut aceiasi problema a ta , insa pe SQL-SERVER pt peste 550 de milioane de inregistrari. neagu_laurentiu, on 02 august 2017 - 13:50, said:
Ce nu e clar din comentariul meu de mai sus? Ai datele, ai un criteriu dupa care asociezi data cu pricina, poti folosi cursorul dau update-ul (aici in functie de criteriul tau). Nu se pune problema de manual! Edited by Qupidqu, 08 September 2017 - 10:10. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users