Nå barn, ett spørsmål om tid

The Perpetual Newbie - Logg Entry # 7.1This artikkelen først dukket opp på http: //www.undu.comNormalized data er stor. Én forekomst av ethvert individ datum, og aldri holde rundt noen data som kan ekstrapoleres fra andre data på fly. Lean, mean og noen ganger en gigantisk pain.A kunde spurte meg et enkelt spørsmål. Kan vi se en opptelling rapport over bare deler som tilhører en råvare gruppe som har mer enn én del i det? Dette vil gi bedre totale visning av råmaterialet trenger lang sikt. (Vi har Min /Max og on Demand automatiske råstoff innkjøps røde flagg lister allerede. De ønsket å se den globale syn på flere bruk råvare) Simple. Jeg vil spørre inventar database for alle deler der RMG (råvarer Gruppe code) har mer enn én forekomst. Paradox, jeg vil gjøre en CALC telle alle søket på RMG, deretter en annen spørring ber for alle postene i Inventory database som er i den midlertidige svaret tabellen. Paradox vil rydde opp svaret bordet ved min blir ferdig med det. Hele koding øvelsen ville bli trivial.But hvordan du gjør det i lokal SQL bruker de samme Paradox databaser for Delphi? Et svar som fungerte var å gjøre de samme spørsmål som ovenfor, men jeg måtte ta vare å skape svaret database i det virkelige liv, og deretter slette den i ettertid. Noisome. Dessuten var det ikke noen måte å gjøre dette på en super SQL-setning? Noe om nestet uttalelser? Det er en løgn folkens. Nøstet SQL ser ikke ut til å jobbe med lokal SQL blir utført på Paradox tabeller. Etter noen head-dundrende, innrømmet jeg nederlag og ledet til amerikansk søkesiden (developers.href.com) og begynte å lete. Jeg gjorde to søkene før jeg møtte visdom én Steve Koterski av Borland. Synes han er den lokale SQL veiv. Ved å ekstrapolere noen av hans svar og teste litt, oppdaget jeg en fin, ren løsning på problemet. Og denne løsningen har annen anvendelse hvis du fortsetter å bruke Paradox databaser i applications.First, opprettet jeg en SQL-fil som heter "CountRMG.SQL." Dette er det samme som min første spørring ovenfra: /* Alias: THEAPPLiveAnswer: FALSK * /velge RMG, telle (RMG) som MULTI fra «INVENTRM.DB" GROUP BY RMGThis er et enkelt eksempel, men du kan gjøre sum utgjør bare like lett. Ideen er å få noen aggregerte data. Dette fører til den faktiske spørringen som brukes i programkoden: SELECT R. * FROM "INVENTRM.DB" R ", COUNTRMG.SQL" M WHERE ((R.RMG = M.RMG) og (M.MULTI > 1) ) Hemmeligheten er knytte til det andre "virtuelt" bordet via den lagrede SQL-kode. Det vil laste og kjøre, og tilbyr seg selv som en midlertidig in-memory tabell for å filtrere INVENTRM with.The mulighetene for å bruke denne faux nestet SQL er absolutt ikke begrenset til å gjøre tellinger å finne flere forekomster av en sekundær indeksfeltet. Som nevnt, kan du gjøre summer for et datointervall og produserer alle elementer som faller inn i detaljer i dette området. Nesten alle av dem vil føre til en to-trinns spørring og til svaret du need.Gary MugfordIdea Mechanic, Bramalea ON [email protected] Anmeldelser



Previous:
Next Page: