Juzeppe Posted October 29, 2008 Report Share Posted October 29, 2008 Taatad sekojosha probleema. ( Droshi vien ka pilniigi banaala bet probleema ir probleema) Ir sekojoshas divas tabulas: 1: Rajoni id | name_lv | name_ru id, rajona nosaukums latviski, nosaukums krieviski 2: Pilsetas un pagasti id | region | name_lv | name_ru id, Rajona ID, nosaukums latviski, nosaukums krieviski un luuk arii jautaajums: Kaa vareetu dabuut sekojoshu izvadu?: Rīga -------- Āgenskalns Aplokciems Beberbeķi Berģi Bieķēnsala Ogre -------- Jaunogre Pārogre Nekuriene Elles pagasts Link to comment Share on other sites More sharing options...
Delfins Posted October 29, 2008 Report Share Posted October 29, 2008 join Link to comment Share on other sites More sharing options...
Juzeppe Posted October 29, 2008 Author Report Share Posted October 29, 2008 To es saprotu ka join. vai nu viens ar join vai divi atsevishki kveriji - protams atkariigs no roku lenkja. Jautaajums kaa to visu pareizi izvadiit. nezinu kapeec bet man sanaaca diivaini. Izdod teiksim rajonu Riigas un pieliek normaali apakshaa visus pagastus kas pie riigas, bet kad tiek izdots naakoshais rajons - Ogre, tad pie vinja apakshaa ir visi pagasti kas ir pie riigas + tie kas ir pie Ogres rajona. Link to comment Share on other sites More sharing options...
andrisp Posted October 29, 2008 Report Share Posted October 29, 2008 Nu es darītu tā, ka ar vienu kveriju iegūtu visas pilsētas/pagastus sakārtotus pēc rajona, kā arī katrai pilsētai/pagastai būtu piedžoinots rajona nosaukums. Tad ciklētu sarakstam cauri apt. šādā stilā: $prev_region_id = ''; cikls { if ($row['region_id'] != $prev_region_id) { echo $row['region_name']; } $prev_region_id = $row['region_id']; echo $row['blabla_pashi_dati']; } Link to comment Share on other sites More sharing options...
Delfins Posted October 29, 2008 Report Share Posted October 29, 2008 tad pie vinja apakshaa ir visi pagasti kas ir pie riigas + tie kas ir pie Ogres rajona. gan jau mainīgo neiztīrīji, bet lasi augst. komentu - pareizais variants, ja negribi N-selektus taisīt Link to comment Share on other sites More sharing options...
Gints Plivna Posted October 29, 2008 Report Share Posted October 29, 2008 Pieņemot ka rajonu nosaukumi ir unikāli (kā vismaz pašlaik dzīvē ir): create table rajoni (raj_id number, nosaukums varchar2(20)); create table pagasti(pag_id number, pag_raj_id number, nosaukums varchar2(20)); insert into rajoni values (1, 'Rīgas'); insert into rajoni values (2, 'Ogres'); insert into rajoni values (3, 'Cēsu'); insert into pagasti values (1, 1, 'Āgenskalns'); insert into pagasti values (2, 1, 'Aplokciems'); insert into pagasti values (3, 2, 'Jaunogre'); insert into pagasti values (3, 2, 'Pārogre'); Oraclē tas būtu tā: SQL> SELECT coalesce(pag_nosaukums, raj_nosaukums) FROM ( 2 SELECT raj.nosaukums raj_nosaukums, pag.nosaukums pag_nosaukums 3 FROM rajoni raj INNER JOIN pagasti pag ON (raj_id = pag_raj_id) 4 UNION ALL 5 SELECT nosaukums raj_nosaukums, NULL pag_nosaukums 6 FROM rajoni 7 UNION ALL 8 SELECT nosaukums raj_nosaukums, '-------------' pag_nosaukums 9 FROM rajoni 10 ORDER BY raj_nosaukums, pag_nosaukums NULLS FIRST 11 ) 12 / COALESCE(PAG_NOSAUKU -------------------- Cēsu ------------- Ogres ------------- Jaunogre Pārogre Rīgas ------------- Aplokciems Āgenskalns 10 rows selected. Tā kā MySQLā NULLS FIRST nav, tad jautājumu var atrisināt iepriekšējā atbildētāja bloga ieraksts http://apblog.lv/2008/10/14/sql-kartosana-un-null-vertibas/ Nezinu vai MySQLā ir f-ja coalesce. Tā kā svītriņas un rajona iznešana ārā acīmredzot ir smukuma lieta, tad iespējams, ka andrap risinājums no datu iegūšanas un prezentācijas atdalīšanas viedokļa būtu pareizāks ;) P.S. ak jā un vēl vajadzēja tukšu rindiņu pēc katra rajona, bet nu tas tipa mājasdarbs :) Nu un protams tā ir nejaušība, ka - simbols mazāks, kā jebkurš alfabēta burts, lai būtu droši tur būtu jāpieliek kāda flaga kolona, pēc kuras kārtot. Gints Plivna http://datubazes.wordpress.com/ Link to comment Share on other sites More sharing options...
Recommended Posts