» »

denormalizacija

denormalizacija

BRBR ::

master
id
1
2
3
...


detail
id
1   26
1   27 
2   26 
...


zaželjen rezultat poizvedbe:

    25 26  27 
1       x   x
2       x


nekaj v tem smislu deluje (MySQL):

select fdf.name,
max((case when fdfm.maturation_period = 26 then 'x' else null END)) as '26',
max((case when fdfm.maturation_period = 27 then 'x' else null END)) as '27'
from fixed_data_fruits fdf 
left join fixed_data_fruits_maturity fdfm on fdf.Name = fdfm.Name
group by fdf.name


ker pa je teh 26, 27 od 1 - 36 al pa opcijsko da jih je n, me zanima ali je kak lepši način izvedbe tega ?

Edit: Pod lepši, za tele namene, ne štejem limanje sql-a v stored proceduri.
  • spremenil: BRBR ()

Spura ::

Jst bi agregacijo rezultatov delal na aplikacijski strani. A je nujno vse na bazi narest?

BRBR ::

Ni. Se mi pa zdi da bi bilo na app. strani pol bolj komplicirano 'kvačkanje'.

Spura ::

Men se prakticno vsako stvar, ki jo naredim na bazi, zdi lazje aplikacijsko naredit samo ni vedno prakticno, ker je baza hitrejsa in ker hoces minimizirat kolicino podatkov, ki se iz baze prenasa. Ampak v takih primerih kot je tvoj se pa definitivno splaca aplikacijsko naredit.
Lej tuki imas celo variabilno stevilo stolpcev glede na podatke v bazi, kar je cist konc.
Recimo ena reprezentacija:
// select fdf.name, fdfm.maturation_period from fixed_data_fruits fdf 
// left join fixed_data_fruits_maturity fdfm on fdf.Name = fdfm.Name order by maturation_period
List<StringIntegerObj> data = DB.select(...);

Map<String, List<Integer>> map = new HashMap<String, List<Integer>>();
for (StringIntegerObj fruit : data) {
    List<Integer> periods = map.get(fruit.getName());
    if (periods == null) {
        periods = new ArrayList<Integer>();
        map.put(fruit.getName(), periods);
    }
    if (fruit.getPeriod() != null) {
        periods.add(fruit.getPeriod());
    }
}


In na koncu imas map, kjer po imenih dobis vse periode. Periode so sortirane, tako da lahko isces z binary searchem.
To je samo en mozen nacin, je pa se veliko drugih.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[SQL] Pohitritev izpisa

Oddelek: Programiranje
252891 (1790) kuall
»

SQL vprasanje (strani: 1 2 )

Oddelek: Programiranje
688336 (5015) BivšiUser2
»

MySQL poizvedba iz dveh tabel

Oddelek: Programiranje
101551 (844) MrStein
»

Normalizirana struktura - query

Oddelek: Programiranje
191717 (1337) frudi
»

baze podatkov

Oddelek: Programiranje
91557 (1476) urkrajnc

Več podobnih tem