Forum » Programiranje » denormalizacija
denormalizacija
BRBR ::
master
detail
zaželjen rezultat poizvedbe:
nekaj v tem smislu deluje (MySQL):
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.
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 ::
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:
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.
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [SQL] Pohitritev izpisaOddelek: Programiranje | 2972 (1871) | kuall |
» | SQL vprasanje (strani: 1 2 )Oddelek: Programiranje | 8413 (5092) | BivšiUser2 |
» | MySQL poizvedba iz dveh tabelOddelek: Programiranje | 1574 (867) | MrStein |
» | Normalizirana struktura - queryOddelek: Programiranje | 1735 (1355) | frudi |
» | baze podatkovOddelek: Programiranje | 1575 (1494) | urkrajnc |