NBS Posted February 21, 2011 Report Share Posted February 21, 2011 Sveiki, vēlējos uzzināt kā, lai uztaisa šādu lietu. Man ir mainīgais: DECLARE @this varchar(30); SET @this = 'qwertyuiopasdfghjklzxcvbnm1234567890'; Vēlos izvadīt visas iespējamos variantus ar 5 simboliem. Vai tas vispār ir iespējams ? Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted February 21, 2011 Report Share Posted February 21, 2011 Vēlos izvadīt visas iespējamos variantus ar 5 simboliem. Vai tas vispār ir iespējams ? VISUS iespejamos? tev kompis atnjirksies pie tik liela dokumenta izvades ... Quote Link to comment Share on other sites More sharing options...
NBS Posted February 21, 2011 Author Report Share Posted February 21, 2011 Nu gan jau, ka nē. Ja nemaldos tikai 5^36 pakāpē. Quote Link to comment Share on other sites More sharing options...
Gints Plivna Posted February 21, 2011 Report Share Posted February 21, 2011 Oraclē to var izdarīt ntajos veidos. Bet spriežot pēc sintakses, tas visdrīzāk ir MySQL, kaut gan autors, protams, tādus sīkumus neuzskata par vajadzīgu norādīt ;) Viens piemērs varētu būt šāds: mysql> desc v; +-------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------+------+-----+---------+-------+ | n | varchar(1) | YES | | NULL | | +-------+------------+------+-----+---------+-------+ 1 row in set (0.01 sec) mysql> select * from v; +------+ | n | +------+ | q | | w | | e | | r | | t | | y | +------+ 6 rows in set (0.00 sec) mysql> select distinct (concat(v1.n, v2.n, v3.n, v4.n, v5.n)) -> from v v1 -> cross join -> v v2 -> cross join -> v v3 -> cross join -> v v4 -> cross join -> v v5 -> limit 20; +----------------------------------------+ | (concat(v1.n, v2.n, v3.n, v4.n, v5.n)) | +----------------------------------------+ | qqqqq | | wqqqq | | eqqqq | | rqqqq | | tqqqq | | yqqqq | | qwqqq | | wwqqq | | ewqqq | | rwqqq | | twqqq | | ywqqq | | qeqqq | | weqqq | | eeqqq | | reqqq | | teqqq | | yeqqq | | qrqqq | | wrqqq | +----------------------------------------+ 20 rows in set (0.00 sec) Tiesa gan tam norādītajam simbolu skaitam variantu skaits ir diezgan iespaidīgs ;) un jautājums ir - ko tad īsti vajag un kādam mērķim kaut ko tādu vispār gribās dabūt? Gints Plivna http://datubazes.wordpress.com Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted February 21, 2011 Report Share Posted February 21, 2011 Un to visu Tu gribi ar DB (MySQL???) līdzekļiem? Varam to this uzskatīt par skaitīšanas sistēmas ciparu uzskaitījumu. Tavā gadījumā jāizvada visi 5 ciparu (un mazāki) skaitļi 35cinieku sistēmā. tādu būs 35^5. pseidokods: for x = 0 to 35^5 echo convert_base_to_35(x,using_as_digits(@this) Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted February 21, 2011 Report Share Posted February 21, 2011 P.S. Jau 35^5 ir liels skaits (un pareizais kombināciju skaits ir tieši 35^5), bet 5^35 ir vienkārši... "polārlapsu tēviņš"translate:ru ku liels skaits. Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted February 21, 2011 Report Share Posted February 21, 2011 ups: sakuka skaitot 35 vietā visur 36 Quote Link to comment Share on other sites More sharing options...
NBS Posted February 21, 2011 Author Report Share Posted February 21, 2011 Gints Plivna diezgan labs piemērs, bet piedošanu, ka sākumā neminēju, ka man vajag to MS SQL. Orākls šajā gadījumā nederēs. Quote Link to comment Share on other sites More sharing options...
Gints Plivna Posted February 21, 2011 Report Share Posted February 21, 2011 (edited) Gints Plivna diezgan labs piemērs, bet piedošanu, ka sākumā neminēju, ka man vajag to MS SQL. Orākls šajā gadījumā nederēs. ŠIS piemērs ar minimālām modifikācijām strādā arī uz MS SQL. Tiesa gan ierakstu skaita nevājais apjoms apjoms un jautājums kāpēc tas vajag vēl joprojām paliek spēkā. SQL Serverī BTW var izmanto common table expression un tur tas tehniski vispār ir bērnu spēle :) with v as ( select 'q' as n union all select 'w' union all select 'e' union all select 'r' union all select 't' union all select 'y') select distinct (v1.n + v2.n + v3.n + v4.n + v5.n) from v v1 cross join v v2 cross join v v3 cross join v v4 cross join v v5; ----- wwweq wrtwy (7776 row(s) affected) Es gan nemēģināšu nokaut kompi uz visiem piedāvātajiem simboliem. BTW varētu būt visādas problēmas ar temp space, atmiņas apjomu utt. Gints Plivna http://datubazes.wordpress.com P.S. JO TĒMĀ rakstīts RANDOM 5 simboli, bet tekstā prasa visus??? Random nav tas pats kas visi, ne pēc funkcionalitātes, ne pēc ieguldāmā proča/atmiņas resursu apjoma. Edited February 21, 2011 by Gints Plivna Quote Link to comment Share on other sites More sharing options...
NBS Posted February 21, 2011 Author Report Share Posted February 21, 2011 Kaut kā man nesanāk. Meiģinu šādi: with v as ( select 'a' as n union all select 'b' union all select 'c' ) select distinct (v1.n + v2.n + v3.n + v4.n + v5.n) from testzzz v1 cross join testzzz v2 cross join testzzz v3 cross join testzzz v4 cross join testzzz v5; Errori tādi: Msg 207, Level 16, State 1, Line 8 Invalid column name 'n'. Msg 207, Level 16, State 1, Line 8 Invalid column name 'n'. Msg 207, Level 16, State 1, Line 8 Invalid column name 'n'. Msg 207, Level 16, State 1, Line 8 Invalid column name 'n'. Msg 207, Level 16, State 1, Line 8 Invalid column name 'n'. Quote Link to comment Share on other sites More sharing options...
Gints Plivna Posted February 21, 2011 Report Share Posted February 21, 2011 (edited) from testzzz v1 from v v1 Ar with klauzu definē apakšpieprasījumu v, no kura pēc tam atlasa. Gints Plivna http://datubazes.wordpress.com P.S. Ā un vēl protams jautājums kurš SQL Serveris? Ja kaut kāds aizvēsturisks, tad tur CTE (common table expression) nebija. Edited February 21, 2011 by Gints Plivna Quote Link to comment Share on other sites More sharing options...
NBS Posted February 21, 2011 Author Report Share Posted February 21, 2011 Ā, es biju domājis tas tabulā jāliek. O, super paldies, strādā :) Quote Link to comment Share on other sites More sharing options...
NBS Posted February 28, 2011 Author Report Share Posted February 28, 2011 Ir kāda ideja, kā šo atrisināt C# ? Piemēram, lai met iekšā listboxā. Jo MS SQL nevar izpildīt tik daudz simboliem cik man vajag. Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted February 28, 2011 Report Share Posted February 28, 2011 Esi drošs, ka C# spēs? Quote Link to comment Share on other sites More sharing options...
NBS Posted February 28, 2011 Author Report Share Posted February 28, 2011 Teorētiski jā. Jo SQL sākumā selektē visu un tad tikai izvada. Bet C# vada pa vienam iekšā. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.