Guest lameris Ierakstīts Janvāris 8, 2005 Share Ierakstīts Janvāris 8, 2005 Man taada probleema sakaraa ar Datu Baazeem. Esmu uztaisiijis Datu vitriinu, kuraa ir iespeejams skatiities datus vairaakaas dimensijaas (griezumos) Bet apskatot visus datus man iznaakushi shmuce, proti, izvads ir shaads (saiisinaats) 1. Jaanis Aadamsons veseliiba_ ministrs Sociaaldemokraati 234Lati 1. Jaanis Aadamsons veseliiba_ ministrs Sociaaldemokraati ---- 1. Jaanis Aadamsons veseliiba_ ministrs -------- ---- 1. Jaanis Aadamsons veseliiba_ ministrs ---- 234Lati .... ... 2 Einaars Repshe aizsardziibas ministrs Jaunais Laiks 565 lait 2 Einaars Repshe aizsardziibas ministrs Jaunais Laiks --- 2 Einaars Repshe aizsardziibas ministrs ----- --- 2 Einaars Repshe --------- Jaunais Laiks 565 lait Un taatad vajag reaali tikai tos ierakstus kur visi lauki ir pilni, vai tas SQL ir iespeejams uztaisiit. NC zinu ka tu shiis lietas rubii, ljoti luudzu paliidziibu Link to comment Share on other sites More sharing options...
VIL Janvāris 8, 2005 Share Janvāris 8, 2005 Tev ir dimensijas: > cilvēks >amats >partija Faktu tabula: > mēneša īres maksa Ja runa būtu par parastu rēlāciju bāzi, es teiktu - neizmanto outer joinus. Šajā gadījumā ir jāatspoguļo visi aizpildītie faktu tabulas raksti ar tiem PIEKĀRTOTAJĀM dimensiju vērtībām. Tu esi atspoguļojis bezmaz vai visas vērtību kombinācijas. Link to comment Share on other sites More sharing options...
Guest lameris Janvāris 8, 2005 Share Janvāris 8, 2005 Tas ieprieksheejais bija taads iiss piemeers. Dimensiju es neesmu veidojis bet es gribu lai es vareetu redzeet visas veertiibas un tad domaat kaadas dimensijas veidot. Man ir viena Indeksu tabula kuraa ir saites uz citaam tabulaam. Lai visu vareetu apskatiit esmu izveidojis materializeetu skatu un no taa ieguustu datus tie ir sekojoshi Create Materialized view Operaacija pctfree 5 pctused 60 storage (initial 50k next 50k) refresh next sysdate+7 as select IndexTabula.ID, IndexTabula.BrutoApgroz, IndexTabula.Nodoklji, Gaters.Nosaukums, Gaters.DibGads, Gaters.VidDarbAlga, Gaters.GadaApgroz, Laiks.Gads, Laiks.Meenesis, Laiks.Diena, Transports.FirmasNos, Transports.Kubatuura, Transports.Attaalums, Transports.TranspIzmaksas, Osta.UzKurieniVediis FROM Laiks, Transports, Gaters, Osta, IndexTabula where (Gaters.TGateraID=IndexTabula.GateraID) AND (Laiks.TLaiksID=IndexTabula.LaiksID)AND (Transports.TTransportsID=IndexTabula.TransportsID)AND (Osta.TOstaID=IndexTabula.OstaID) select ID, BrutoApgroz, Nodoklji Nosaukums, DibGads, VidDarbAlga, Gads, Meenesis, Diena, FirmasNos from Operaacija group by cube (ID); Cik saprotu vajag kaut kaadu citaadaaku Where nosaciijumu jebshu arii pie Select vaicaajumu ierakstiiv veel kaadu select, lai nenjem visas rindinjas bet tikai taas kur visi lauki ir aizpildiiti Link to comment Share on other sites More sharing options...
japets Janvāris 8, 2005 Share Janvāris 8, 2005 lai paarbaudiitu lauku uz NOT NULL veertiibu: ...WHERE field_name IS NOT NULL... Link to comment Share on other sites More sharing options...
VIL Janvāris 8, 2005 Share Janvāris 8, 2005 Nesaprotu, kādēļ pēdējā selektā ir tas "group by". Ja indeksu tabula ir aizpildīta pareizi, tad materializētā viewa veidošanas selekts ir Ok. Es pieņemu, ka Tu karam gaterim, piemēram, mēneša garumā, katrai dienai esi izveidojis indeksa tabulā vienu rakstu. Tagad ir vērts atlasīt visus gatera X 2004. gada decembra rakstus un pārbaudīt, vai tiešām tie ir 31 un pie tam vajadzīgie 31. Ar to es paredzu, ka ir neveiksmīgi aizpildīta IndexTabula. lai paarbaudiitu lauku uz NOT NULL veertiibu:...WHERE field_name IS NOT NULL... is null/is not null automātiski uztaisa full scan, tādēļ no šī kritērija liela apjoma tabulās jāvairās kā no uguns. Labāk datu transformācijas brādī NULL vērtības dekodēt par kādām ārpusdomēna vērtībām. Link to comment Share on other sites More sharing options...
Guest lameris Janvāris 8, 2005 Share Janvāris 8, 2005 Man ir taada logjika: Ir kaada operaacija ar attieciigo ID kuraa ir iekljauts laiks kuraa briidii shii operaacija ir veikta tad no kurienes tiek vesti kokmateriaali (Gatera nosaukums) tad kaada transporta firma un peec tam uz kuru ostu tiek vests. Probleema ir tur ka veidojot (Gaters.TGateraID=IndexTabula.GateraID) AND (Laiks.TLaiksID=IndexTabula.LaiksID)AND (Transports.TTransportsID=IndexTabula.TransportsID)AND (Osta.TOstaID=IndexTabula.OstaID) Vinjsh pie kaarto katram operaacija ID atsevishjki vienu tabulu proti 1. Operaacija 1 laiks taads un taads 2. operaacija 1 gaters taads un taads 3 ..... 4 operaacija 2 laiks taads un taads e.t.c. vajag operaacija1 tikai vinreiz drukaat nevis n-taas Link to comment Share on other sites More sharing options...
VIL Janvāris 8, 2005 Share Janvāris 8, 2005 Tas, ko Tu saki, izskatās ļoti aizdomīgi. Viewa veidošanas selekts, manuprāt, ir pareizs. Ja ir 4 foreign_key lauki, tad ar 4 joiniem, kas savienoti ar AND, panākam, ka šie 4 nosacījumi visiem rakstiem ir vienlaikus spēkā. Tur nav nekādas grupēšanas pa pāriem. Pastāsti, kādu datu bāzi izmanto un ar kādu tūli raksti selektus. (Oracle, SQL+)? Joprojām iesaku pārbaudīt indeksa tabulas saturu. Otra iespēja ir iepostēt visu saistīto tabulu struktūras (desc tabulas_nosaukums). Mēģināsim izdomāt kopīgiem spēkiem. Link to comment Share on other sites More sharing options...
Guest lameris Janvāris 8, 2005 Share Janvāris 8, 2005 Izmantojo Oracle un developer tuuli "Toad" tabulas ir paraadiitas sheit http://paste.php.lv/1514 ierakstus es domaaju ka nevajdzeetu bet indeksu tabulas ierakstus es paraadiishu BEGIN INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(1, 2, 3, 4, 2, 4593, 230); INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(2, 1, 2, 2, 5, 8574, 340); INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(3, 5, 4, 2, 7, 8937, 360); INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(4, 2, 2, 3, 6, 1298, 98); INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(5, 7, 5, 2, 1, 4034, 230); INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(6, 1, 4, 1, 3, 9876, 408); INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(7, 3, 1, 5, 4, 7635, 981); INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(8, 2, 4, 6, 2, 2567, 226); INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(9, 3, 7, 7, 7, 3478, 123); INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(10, 9, 3, 2, 5, 3487, 209); INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(11, 8, 3, 3, 1, 2327, 160); INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(12, 5, 2, 6, 8, 3433, 321); INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(13, 8, 1, 7, 8, 2337, 213); INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(14, 4, 6, 1, 3, 2327, 160); INSERT INTO IndexTabula(ID, LaiksID, GateraID, TransportsID, OstaID, BrutoApgroz, Nodoklji) VALUES(15, 8, 3, 1, 8, 8932, 309); END; Link to comment Share on other sites More sharing options...
Guest lameris Janvāris 8, 2005 Share Janvāris 8, 2005 IS NOT NULL probleemu neatrisina select ID, BrutoApgroz, Nodoklji, Nosaukums, DibGads, VidDarbAlga, UzKurieniVediis from Operaacija WHERE (BrutoApgroz IS NOT NULL) or (Nodoklji IS NOT NULL) or (nosaukums IS NOT NULL) or (dibGads IS NOT NULL)or (VidDarbAlga IS NOT NULL)and (UzKurieniVediis IS NOT NULL) group by cube (ID, BrutoApgroz, Nodoklji, Nosaukums, DibGads, VidDarbAlga, UzKurieniVediis); Link to comment Share on other sites More sharing options...
VIL Janvāris 8, 2005 Share Janvāris 8, 2005 Par pamatu ņemot Tavus dotos insertus, aizpildu pārējās tabulas. Lūk rakstu skaits tabulās: SQL> select 'select count(*) from '||table_name||';' from user_tables; 'SELECTCOUNT(*)FROM'||TABLE_NAME||';' -------------------------------------- select count(*) from GATERS; select count(*) from INDEXTABULA; select count(*) from LAIKS; select count(*) from OSTA; select count(*) from PRIEKSHNIEKS; select count(*) from TRANSPORTS; 6 rows selected. SQL> select count(*) from GATERS; COUNT(*) --------- 7 SQL> select count(*) from INDEXTABULA; COUNT(*) --------- 14 SQL> select count(*) from LAIKS; COUNT(*) --------- 8 SQL> select count(*) from OSTA; COUNT(*) --------- 9 SQL> select count(*) from PRIEKSHNIEKS COUNT(*) --------- 1 SQL> select count(*) from TRANSPORTS; COUNT(*) --------- 7 Tagad izpildu maerializētā viewa veidošanas selektu. SQL> select IndexTabula.ID, IndexTabula.BrutoApgroz, IndexTabula.Nodoklji, 2 Gaters.Nosaukums, Gaters.DibGads, Gaters.VidDarbAlga, Gaters.GadaApgroz, 3 Laiks.Gads, Laiks.Meenesis, Laiks.Diena, 4 Transports.FirmasNos, Transports.Kubatuura, Transports.Attaalums, Transports.TranspIzmaksas, 5 Osta.UzKurieniVediis 6 FROM Laiks, Transports, Gaters, Osta, IndexTabula 7 where (Gaters.TGateraID=IndexTabula.GateraID) AND 8 (Laiks.TLaiksID=IndexTabula.LaiksID)AND 9 (Transports.TTransportsID=IndexTabula.TransportsID)AND 10 (Osta.TOstaID=IndexTabula.OstaID) 11 / ID BRUTOAPGROZ NODOKLJI NOSAUKUMS DIBGADS VIDDARBALGA GADAAPGROZ GADS MEENESIS DIENA FIRMASNOS KUBATUURA ATTAALUMS TRANSPIZMAKSAS UZKURIENIVEDIIS --- ----------- --------- -------------------- --------- ----------- ---------- --------- --------- --------- -------------------- --------- --------- -------------- --------------- 1 4593 230 gaters # 3 1999 300 100000 2000 2 12 firma 4 4 19 17 13 2 8574 340 gaters # 2 1999 300 100000 1999 1 10 firma 2 2 13 19 16 3 8937 360 gaters # 4 1999 300 100000 2003 5 18 firma 2 2 13 19 18 4 1298 98 gaters # 2 1999 300 100000 2000 2 12 firma 3 3 16 18 17 5 4034 230 gaters # 5 1999 300 100000 2005 7 22 firma 2 2 13 19 12 6 9876 408 gaters # 4 1999 300 100000 1999 1 10 firma 1 1 10 20 14 7 7635 981 gaters # 1 1999 300 100000 2001 3 14 firma 5 5 22 16 15 8 2567 226 gaters # 4 1999 300 100000 2000 2 12 firma 6 6 25 15 13 9 3478 123 gaters # 7 1999 300 100000 2001 3 14 firma 7 7 28 14 18 11 2327 160 gaters # 3 1999 300 100000 2006 8 24 firma 3 3 16 18 12 12 3433 321 gaters # 2 1999 300 100000 2003 5 18 firma 6 6 25 15 19 13 2337 213 gaters # 1 1999 300 100000 2006 8 24 firma 7 7 28 14 19 14 2327 160 gaters # 6 1999 300 100000 2002 4 16 firma 1 1 10 20 14 15 8932 309 gaters # 3 1999 300 100000 2006 8 24 firma 1 1 10 20 19 14 rows selected. Acīmredzami, viss ir Ok. Katram IndexTabula rakstam (no 14) atbilst tieši un precīzi viens raksts. Nekur nekas pa pāriem netiek likts. Lūdzu padalies ar selectu, ar kuru Tu velc ārā datus no tā skatījuma. Manējais(Tavējais) selekts strādā labi. P.S. Lūdzu "<code>" vietā raksti " " Link to comment Share on other sites More sharing options...
Guest lameris Janvāris 8, 2005 Share Janvāris 8, 2005 bljaaviens tev straadaa! Man skjiet ka kljuuda ir index tabulas veidoshanaa Vai tu domaa to select kas njem datus aaraa no view tad tas ir taads bet nekaadas kljuudas nav jo rakstot kaut vai select * from operaacija kur operaacija ir materializeetaa skata nosaukums man izdrukaa paris simtus ierakstu kuru ir vienaadi Link to comment Share on other sites More sharing options...
Guest lameris Janvāris 8, 2005 Share Janvāris 8, 2005 Paklausies, bet kaa var saglabaat materializeeto skatu. Man arii ar select straadaa bet ar Create Materialized view Operaacija pctfree 5 pctused 60 storage (initial 50k next 50k) refresh next sysdate+7 as select ... aiziet dibenaa Link to comment Share on other sites More sharing options...
VIL Janvāris 8, 2005 Share Janvāris 8, 2005 bet nekaadas kljuudas nav jo rakstot kaut vai select * from operaacija kur operaacija ir materializeetaa skata nosaukums man izdrukaa paris simtus ierakstu kuru ir vienaadi Šis apgalvojums jau sāk norādīt uz problēmas cēloni. Es nekad ar snapshotiem neesmu darbojies, bet velk uz to, ka Tu insert komandu esi izpildījis vairākas reizes, par ko liecina kaudze ar vienādiem rakstiem. Eksperimenta tīrībai var nodropot to materializēto viewu un pēc tam izveidot par jaunu un uzreiz ieselektēt visus rakstus. Ar tiem selektiem ir tā: ko tabulā ierakstīji, to arī nolasīsi. Toļko lovkostj ruk i ņikakavo obmana. Link to comment Share on other sites More sharing options...
Guest lameris Janvāris 8, 2005 Share Janvāris 8, 2005 Varam sleegt sho topiku Paldies par paliidziibu Es nodropoju visas tabulas un tad visu paartaisiiju un tagad viss straadaa Mistika, bet iespeejams neuzmaniiba! Ljoti liels paldies Link to comment Share on other sites More sharing options...
VIL Janvāris 8, 2005 Share Janvāris 8, 2005 Paklausies, bet kaa var saglabaat materializeeto skatu. Man arii ar select straadaa bet ar Create Materialized view Operaacija pctfree 5 pctused 60 storage (initial 50k next 50k) refresh next sysdate+7 as select ... aiziet dibenaa Kā jau minēju, nekad neesmu nodarbojies ar snapshotiem. Pa rokai man mētājas kaut kāds 8i *,pdf, kur pie "cretate materialized view" rakstīts ir šis: Varam sleegt sho topiku Paldies par paliidziibu Es nodropoju visas tabulas un tad visu paartaisiiju un tagad viss straadaaMistika, bet iespeejams neuzmaniiba! Ljoti liels paldies Ņem par labu. Topiku atstāšu atvērtu, jo prognozēju, ka pēc kārtējā materializētā viewa refreša Tu atkal vēlēsies par šo jautājumu parunāt. Cerams, ka man nav taisnība. 8) Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!