<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlserver.ro/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>T-SQL</title><link>http://sqlserver.ro/forums/15/ShowForum.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Re: o problema de update</title><link>http://sqlserver.ro/forums/thread/4094.aspx</link><pubDate>Tue, 19 Feb 2008 14:11:02 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:4094</guid><dc:creator>Gherry</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/4094.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=4094</wfw:commentRss><description>am revenit..&lt;br&gt;&lt;br&gt;in primul rand trebuie neaparat mentionez ca m-a luat cu dureri de cap incercand sa inteleg ce am sris eu in descrierea problemei asa ca mltumesc nespus celor care au rezistat tentatiei de a trece mai departe si au incercat sa ma ajute; &lt;br&gt;&lt;br&gt;in al doilea rand am reusit sa gasec inca un raspuns la problema mea si am decis sa il postez aici (fara prea multe explicatii pt ca nu ma pricep la alea)&lt;br&gt;&lt;br&gt;asta ar fi tabelul de test:&lt;br&gt;&lt;br&gt;CREATE TABLE [dbo].[Table_1](&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [id] [int] IDENTITY(1,1) NOT NULL,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [sub_id] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,&lt;br&gt;&amp;nbsp;CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED &lt;br&gt;(&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [id] ASC&lt;br&gt;)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]&lt;br&gt;) ON [PRIMARY]&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------------------------------------------------&lt;br&gt;acestea sunt datele de plecare (daca poate sa imi spuna cineva cum sa scriptez continutul unui tabel ar fi super) - dar se vede mai bine ce e nevoie in rezultate&lt;br&gt;&lt;br&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;a&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;a&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;ab&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;b&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;cdf&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;dfds&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;ddd&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;cdf&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;adf&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;dfds&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;bb&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;cc&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;ddd&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;ddd&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br&gt;------------------------------------------------------------------------------------------------------------------------&lt;br&gt;acestea sunt rezultatele:&lt;br&gt;&lt;br&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;a&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;a&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;ab&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;adf&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;b&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;bb&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;cc&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;cdf&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;cdf&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;ddd&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;ddd&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;ddd&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;dfds&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;dfds&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;br&gt;se poate observa ca am daugat o noua coloana care itroduce un fel de sub_id care incepe de la 1 in cazul fiecarui grup de inregistrari duplicate si incrementeaza pana la sfarsitul grupului.&lt;br&gt;&lt;br&gt;eu aveam nevoie de un query care sa imi genereze datele de pe acea coloana folosind ce se gasea in primele 2 coloane (prima era un id unic pe tabel)&lt;br&gt;&lt;br&gt;bineinteles ca aceasta este o reprezentare mult simplificata a problemei mele (inca o data imi cer scuze ca nu am dat un exemplu atat de clar de la inceput) si cred ca este irelevant motivul pt care ar vrea cineva sa faca ce am prezentat mai sus&lt;br&gt;&lt;br&gt;iar o rezolvare destul de interesanta la care am ajuns de curand cu mult ajutor din partea unui prieten ar fi urmatoarea:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id, SUBSTRING(sub_id, 1, 10) AS init, SUBSTRING(CAST&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COUNT(sub_id) + 1 AS Expr1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Table_1 AS t2&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Table_1.id &amp;gt; id) AND (Table_1.sub_id = sub_id)) AS nvarchar(10)) + sub_id, 1, 1) AS result&lt;br&gt;FROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Table_1&lt;br&gt;ORDER BY init, result&lt;br&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;daca poate sa imi spuna cineva care solutie este mai performanta (aceasta care foloseste COUNT sau cea in care se foloseste un cursor) m-ar scuti de testele care ar merita facute. &lt;img src="http://sqlserver.ro/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;br&gt;sau macar sa imi dati cateva linii care ar trebui urmarite pt un astfel de test, thx.&lt;br&gt;</description></item><item><title>Re: o problema de update</title><link>http://sqlserver.ro/forums/thread/2357.aspx</link><pubDate>Tue, 31 Jul 2007 17:00:15 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2357</guid><dc:creator>Gherry</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2357.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2357</wfw:commentRss><description>trebuie sa mai fac niste teste si o sa revin cu detalii oricum solutia suna superb &lt;img src="http://sqlserver.ro/emoticons/emotion-1.gif" alt="Smile" /&gt; o sa te tin la curent &lt;br&gt;&lt;p&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;</description></item><item><title>Re: o problema de update</title><link>http://sqlserver.ro/forums/thread/2354.aspx</link><pubDate>Tue, 31 Jul 2007 14:11:41 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2354</guid><dc:creator>B_gd_n[ ]Sahlean</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2354.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2354</wfw:commentRss><description>&lt;p&gt;Citat&lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;b&gt;"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 &lt;u&gt;imi da eroare &lt;/u&gt;..."&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Asa cum ai zis si tu eroarea apare pt. ca modifici valorile din campul C4 (asa cel putin am inteles din ce ai scris in mesajul anterior), aceste modificari ducând la apariţia unor valori duplicat in indexul care admite doar VALORI UNICE C1+C2+C3+C4.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br&gt;Pentru a evita aceasta eroare poti proceda astfel:&lt;/p&gt;&lt;p style="font-weight:bold;"&gt;ALTER TABLE Tabel ALTER COLUMN c3 VARCHAR(36) &lt;br&gt;UPDATE Tabel SET c3 = newid()&lt;br&gt;&lt;br&gt;... aici rulezi scriptul tau pentru toate inregistrarile ...&lt;br&gt;&lt;br&gt;UPDATE Tabel SET c3 = NULL &lt;/p&gt;&lt;p&gt;&amp;nbsp;Explicatii:&lt;/p&gt;&lt;p&gt;[1] Poti utiliza câmpul C3 într-un mod util dacă tot urmează să "ştergi" valorile acestui camp. Astfel defineşti C3 (de exemplu) de tip VARCHAR cu o dimensiune de 36 de caractere pentru a putea stoca GUIDuri. Valorile tip GUID au proprietatea de a fi unice cel puţin la nivelul aceluiaşi sistem de calcul/calculator (teoretic). &lt;/p&gt;&lt;p&gt;Având valori UNICE în campul C3 atunci ÎN MOD DIRECT indexul cu valori UNICE C1+C2+C3+C4 va avea perechi de valori (C1+C2+C3+C4) UNICE. Ca atare, orice valori vei avea in C4 indexul va respecta în permanenţă restricţia de a avea valori unice(mai corect perechi de valori pentru ca este un index compus şi nu un index simplu) CREATE &lt;u&gt;&lt;b&gt;UNIQUE &lt;/b&gt;&lt;/u&gt;INDEX ...&lt;br&gt; &lt;/p&gt;&lt;p&gt;[2] Incarci GUIDuri unice in C3 din tabela.&lt;/p&gt;&lt;p&gt;[3] Rulezi script-ul scris de tine&lt;/p&gt;&lt;p&gt;[4] "Ştergi" valorile (mai precis GUIDurile) din câmpul C3 cu ajutorul unei comenzi UPDATE ... C3 = NULL&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: o problema de update</title><link>http://sqlserver.ro/forums/thread/2353.aspx</link><pubDate>Tue, 31 Jul 2007 09:37:07 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2353</guid><dc:creator>Gherry</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2353.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2353</wfw:commentRss><description>&lt;p&gt;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 &lt;img src="http://sqlserver.ro/emoticons/emotion-4.gif" alt="Stick out tongue" /&gt;&lt;img src="http://sqlserver.ro/emoticons/emotion-1.gif" alt="Smile" /&gt; (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&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;acum o sa incerc sa reformulez problema&amp;nbsp; &lt;img src="http://sqlserver.ro/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;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&lt;/p&gt;&lt;p&gt;&amp;nbsp;(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)&lt;br&gt;&lt;/p&gt;&lt;p&gt;- am un tabel T1 din care 5 campuri sunt esentiale pt problema mea:&amp;nbsp; id, C1, C2, C3, C4&lt;/p&gt;&lt;p&gt;- id este cheia primara&lt;/p&gt;&lt;p&gt;- 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)&lt;/p&gt;&lt;p&gt;&amp;nbsp;- inregistrarile din tabel se pot grupa in seturi (asta e de fapt o observatie, un fel de "busines rule" a beneficiarului)&lt;/p&gt;&lt;p&gt;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&amp;nbsp; avem mai multe inregistrari&amp;nbsp; 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) &lt;/p&gt;&lt;p&gt;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&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;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.&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: o problema de update</title><link>http://sqlserver.ro/forums/thread/2351.aspx</link><pubDate>Tue, 31 Jul 2007 08:10:59 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2351</guid><dc:creator>B_gd_n[ ]Sahlean</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2351.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2351</wfw:commentRss><description>&lt;p&gt;Exprimare deficitara.&lt;br&gt;Cand vei reusi sa ai exprimare clara, poate atunci vei obtine o solutie ... &lt;br&gt;&lt;br&gt;Cateva observatii se impun:&lt;br&gt;[1] se utilizeaza termenul de câmp (sau atribut) si nu cel de coloana,&lt;br&gt;[2] termenul de record (en.) are un echivalent in limba romana: inregistrare,&lt;br&gt;[3] formularea "coloanele C1,2,3 sunt la fel" este neclara. Din ce punct de vedere sunt "la fel": din punct de vedere al tipului, al marimii, al domeniului ?&lt;br&gt;[4] folosesti expresia "cheie compusa" care este o exprimare imprecisa deoarece atat o cheie primara, o cheie externa cat si o cheie candidat pot fi "chei compuse" (din context se poate deduce ca este vorba de o cheie primara compusa),&lt;br&gt;[5] specifica cel putin versiunea SQL Server utilizata,&lt;/p&gt;&lt;p&gt;&lt;img src="http://sqlserver.ro/emoticons/emotion-14.gif" alt="Devil" /&gt; exprima-te CLAR.&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: o problema de update</title><link>http://sqlserver.ro/forums/thread/2349.aspx</link><pubDate>Tue, 31 Jul 2007 06:47:54 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2349</guid><dc:creator>Gherry</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2349.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2349</wfw:commentRss><description>&lt;p&gt;&lt;img src="http://sqlserver.ro/emoticons/emotion-1.gif" alt="Smile" /&gt; nu m-am exprimat foarte clar (in exemplul dat am pus doar un set de inregistrari). in T1 am seturi de inregistrari care au primele 3 coloane la fel in cadrul setului (dar difera de la iun set la altul) iar C4 pleaca de la "a" pt fiecare set in parte iar id-urile sunt amestecate (deci intre inregistrari din cadrul unui set exisa inregisrtatri din multe alte seturi). Adica tabelul arata cam asa:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;id &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; C1 C2 C3 C4&lt;br&gt;-------------------------- &lt;br&gt;23 &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; o &amp;nbsp;&amp;nbsp; x &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; a&lt;/p&gt;&lt;p&gt;25 &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; / &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp; &amp;nbsp;&amp;nbsp; ^ &amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;/p&gt;&lt;p&gt;40 &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; / &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp; &amp;nbsp;&amp;nbsp; ^ &lt;br&gt;&amp;nbsp;&lt;br&gt;44 &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt; &amp;nbsp;&amp;nbsp; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; a&lt;/p&gt;47 &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; o &amp;nbsp;&amp;nbsp; x &amp;nbsp;&amp;nbsp; g &amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;p&gt;48 &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; / &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; c&lt;/p&gt;&lt;p&gt;49 &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; o &amp;nbsp;&amp;nbsp; x &amp;nbsp;&amp;nbsp; g &amp;nbsp;&amp;nbsp; c&lt;br&gt;&lt;/p&gt;88 &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; &amp;nbsp;&amp;nbsp; &amp;gt; &amp;nbsp; ? &amp;nbsp;  &lt;br&gt;&lt;p&gt;&amp;nbsp;deci aici am pus 3 seturi care se intrepatrund si au numar diferit de recorduri &amp;nbsp; &lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; / &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; c &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - 3 records, &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  o &amp;nbsp;&amp;nbsp; x &amp;nbsp;&amp;nbsp; g &amp;nbsp;&amp;nbsp;&amp;nbsp; c&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  - 3 records&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp; &amp;nbsp;  &amp;lt; &amp;nbsp;&amp;nbsp; &amp;gt; &amp;nbsp; ?&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;&amp;nbsp; - 2 records&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;asa ca banuiesc ca o solutie ar presupune in primul rand un group by dupa primele 3 coloane, un tabel care sa contina literele de la a la z.. si cateva legaturi mai complexe.. (zic eu..) &lt;img src="http://sqlserver.ro/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;deocamdata am facut cursorul si o sa lucrez cu el (pt ca momentan viteza de rezolvare e mai importanta decat calitatea solutiei) dar m-ar interesa foarte mult daca se poate face folosind procesarea paralela.. totusi suntem in sql &lt;img src="http://sqlserver.ro/emoticons/emotion-4.gif" alt="Stick out tongue" /&gt; &lt;br&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: o problema de update</title><link>http://sqlserver.ro/forums/thread/2348.aspx</link><pubDate>Mon, 30 Jul 2007 16:44:39 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2348</guid><dc:creator>Diana</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2348.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2348</wfw:commentRss><description>&lt;p&gt;Incearca:&lt;/p&gt;&lt;p&gt;DECLARE @tmp TABLE(id tinyint IDENTITY(1, 1), col1 varchar(10))&lt;br&gt;
INSERT INTO @tmp VALUES('a')&lt;br&gt;
INSERT INTO @tmp VALUES('b')&lt;br&gt;
INSERT INTO @tmp VALUES('c')&lt;br&gt;
INSERT INTO @tmp VALUES('d')............etc......&lt;/p&gt;&lt;p&gt;&amp;nbsp;UPDATE Table1 SET c3 = NULL, c4 = tmp.col1&lt;br&gt;
FROM Table1 t1 JOIN @tmp tmp ON t1.id = tmp.id&lt;/p&gt;&lt;p&gt;*Table1 este tabelul&amp;nbsp; (id, c1, c2, c3, c4)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>o problema de update</title><link>http://sqlserver.ro/forums/thread/2346.aspx</link><pubDate>Mon, 30 Jul 2007 14:18:24 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2346</guid><dc:creator>Gherry</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2346.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2346</wfw:commentRss><description>&lt;p&gt;am un tabel cu 5 coloane (id, c1, c2, c3, c4) cu urmatoarele inregistrari&lt;/p&gt;&lt;p&gt;id &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; C1 C2 C3 C4&lt;br&gt;-------------------------- &lt;br&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; o &amp;nbsp;&amp;nbsp; x &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; a&lt;/p&gt;&lt;p&gt;2&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; o &amp;nbsp;&amp;nbsp; x &amp;nbsp;&amp;nbsp; g &amp;nbsp;&amp;nbsp; c&lt;br&gt;&lt;/p&gt;&lt;p&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; o &amp;nbsp;&amp;nbsp; x &amp;nbsp;&amp;nbsp; g &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;care trebuie adus la forma:&lt;/p&gt;&lt;p&gt;id &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; C1 C2 C3 C4&lt;br&gt;
-------------------------- &lt;br&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; o &amp;nbsp;&amp;nbsp; x &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; a&lt;/p&gt;&lt;p&gt;2 &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; o &amp;nbsp;&amp;nbsp; x &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; b&lt;br&gt;&lt;/p&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; o &amp;nbsp;&amp;nbsp; x &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; c&lt;br&gt; &lt;p&gt;coloanele C1,2,3 sunt la fel iar C4 contine caractere in ordine plecand de la "a"  (pt fiecare set de recorduri - sunt mai multe seturi diferite in tabel cu C1,2,3 identice si C4 = a,b,...)&lt;/p&gt;exista si o cheie compusa care contine toate coloanele deci nu pot avea 2 recorduri la fel&lt;br&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;am scris o functie care o apelez pt fiecare inregistrare si care stie sa verifice daca are forma corecta si, eventual sa corecteze in asa fel incat sa indeplineasca conditiile. (practi r2 si r3 trebuie corectate)&lt;br&gt; &lt;/p&gt;&lt;p&gt;daca rulez functia pe rand pt fiecare record merge corect insa daca o rulez pe tot setul imi zice ca se creaza inregistrari duplicate.. banuiesc ca asta e din cauza ca ruleaza in paralel pt r2 si r3 si amandoua se opresc la litera "b" in loc sa mearga una pana la "c" (aveti idee cum as putea verifica teoria asta)&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br&gt;o solutie ar fi sa creez un cursor care sa parcurga tot tabelul si sa aplice functia pe rand fiecarui record dar as prefera sa evit asta asa ca: stie cineva o varianta mai eleganta?&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description></item></channel></rss>