Forum » Programiranje » Dinamični query oz. join removal
Dinamični query oz. join removal
hendriks ::
Na stackoverlow-u pravijo da je težko, kako bi se vi lotili tega?
Recimo da imamo naslednjo funkcijo
-inputQuery: sql query, ki vsebuje polja, tabele, joine in where pogoje
-mandatoryTables: seznam obveznih tabel
-userFields: seznam polj, ki jih uporabnik izbere iz poljubne aplikacije
inputQuery je sestavljen npr. takole:
userFields: SomeFieldB, SomeFieldC
mandatoryTables: Table1
Pričakovani query je:
Torej, kako bi se lotili tega? Binarna drevesa? Je kdo že delal kaj takega?
Hvala in lep pozdrav :)
Recimo da imamo naslednjo funkcijo
string ConstructQuery(string inputQuery, string[] mandatoryTables, string[] userFields)
-inputQuery: sql query, ki vsebuje polja, tabele, joine in where pogoje
-mandatoryTables: seznam obveznih tabel
-userFields: seznam polj, ki jih uporabnik izbere iz poljubne aplikacije
inputQuery je sestavljen npr. takole:
SELECT Table1.SomeFieldA, Table2.SomeFieldB, Table2.SomeFieldC, Table3.SomeFieldD FROM Table1 JOIN Table2 ON Table1.Code = Table2.Code JOIN Table3 ON Table2.Code = Table3.Code WHERE Table1.SomeConditionField = "xyz"
userFields: SomeFieldB, SomeFieldC
mandatoryTables: Table1
Pričakovani query je:
SELECT Table2.SomeFieldB, Table2.SomeFieldC FROM Table1 JOIN Table2 ON Table1.Code = Table2.Code WHERE Table1.SomeConditionField = "xyz"
Torej, kako bi se lotili tega? Binarna drevesa? Je kdo že delal kaj takega?
Hvala in lep pozdrav :)
joze67 ::
Tabele zmečeš v drevo - dve vozlišči sta povezani, če nastopata v join stavku. Označiš obvezne in uporabljene tabele. Poiščeš najmanjše drevo, ki vsebuje vse označene tabele (npr. mečeš neoznačene liste enega za enim ven). Potem narediš DFS od nekega obveznega vozlišča in vsakič izpišeš pogoj JOIN.
Seveda ob predpostavki, da začetni pogoji inducirajo eno drevo, in ne mogoče gozda. Pa da če je več obveznih tabel, da je vseeno, iz katere greš.
Seveda ob predpostavki, da začetni pogoji inducirajo eno drevo, in ne mogoče gozda. Pa da če je več obveznih tabel, da je vseeno, iz katere greš.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | sql join stavki in group byOddelek: Programiranje | 3354 (2989) | GupeM |
» | Java skeniranje map in podmapOddelek: Programiranje | 1148 (1037) | nightrage |
» | [SQL] InsertOddelek: Programiranje | 2074 (1676) | greentech |
» | pgSQL problem z indexi...Oddelek: Izdelava spletišč | 1157 (1067) | Tito |
» | SQL select problemčekOddelek: Programiranje | 1074 (944) | darh |