Welcome to Sign in | Help

Re: o problema de update

  •  07-31-2007, 12:37 PM

    Re: o problema de update

    in primul rand recunosc ca exprimarea mea are lacune, motiv pt care am si scris un mesaj in care intrebam daca poate recomanda cineva niste cursuri de incepatori.. lucrez de vreo 3 ani in sql insa cam tot ce stiu am invatat din experiente proprii si mai putin din dialoguri cu alte persoane asa ca la capitolul terminologie stau extrem de rau pt ca pe mine m-a interesat utilitate si nu numele Stick out tongueSmile (plus ca 90% din documentatie era in engleza si acolo este termenul de column, record si constrain de aici unele erori de exprimare/traducere) deci apreciez enorm orice fel de critici pe chestia asta si mai ales sugestiile

     acum o sa incerc sa reformulez problema  Smile

    baza in cauza este pe SQL Server 2000 insa eu scriu toate query-urile si ruleze testele pe SQL Server 2005 Standard Edition dupa care le transfer pe 2000 deci trebuie sa lucreze pe ambele

     (am copiat baza de pe calculatorul clientului la mine si acum scriu query-urile care sa rezolve problema si le testez la mine iar cand sunt gata le voi rula pe baza clientului, deci nu exista transfer de date intre cele 2 baze)

    - am un tabel T1 din care 5 campuri sunt esentiale pt problema mea:  id, C1, C2, C3, C4

    - id este cheia primara

    - compania care a implementat baza a pus un index unic format din C1-4 (nu stiu cat e de corecta exprimarea) care ma impiedica sa am in tabel inreistrarile 2,q,w,e,r si 3,q,w,e,r (ele au cheia primara diferita insa combinatia C1-4 este identica)

     - inregistrarile din tabel se pot grupa in seturi (asta e de fapt o observatie, un fel de "busines rule" a beneficiarului)

    Problema este ca, in timp, benficiarul nu a avut o modalitate consecventa de introducere a datelor iar acum s-a ajuns la concluzia ca baza are o multime de inregistrari care in realitate sunt una si aceasi chestie insa in baza apar ca mai multe entitati scrise diferit asa ca s-a decis sa se aduca toate inregistrarile la o forma comuna in care C1-2 contin datele esentiale iar in cazul in care  avem mai multe inregistrari  care la care combinatia C1-2 este identica (ceea ce se intampla in foarte multe cazuri) vom folosi C4 pt a face diferenta si pt a respecta indexul de care ziceam. campul C3 va ramne gol (asta probabil ca suna aberant insa acolo sunt mai multe detalii in care nu are sens sa intru asa ca pt a simplifica problema consideram ca avem C3 gol in tot tabelul)

    Deci eu trebuie sa sterg ce este pe campul C3 iar apoi sa iau grupurile de inregistrari care au combinatia C1-2 identica si sa scriu un carcater pe C4 care sa diferentieze inregistrarile

     Am scris functia care imi returneaza caracteruul de care am nevoie pt fiecare inregistrare in parte in conformitate cu cerintele beneficiarului si functioneaza corect cand este folosita intr-un cursor care ia pe rand fiecare inregistrare din tabel insa daca incerc sa o rulez direct pe toate inregistrarile imi da eroare care zice ca incalc indexul unic format din C1-4 asa ca am presupus ca e din cauza ca functia este apelata pe 2 inregistrari din acelasi set in acelasi timp si, din cauza asta, returneaza acelasi rezultat pt C4.

     

View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems