Využij akce až 80 % zdarma při nákupu e-learningu. Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu
python week
Avatar
Adam Gajdečka:1. února 19:46

Ahoj, potřebuji radu. Mám .NET Core 5 web aplikaci, kde chci mít vyhledání stejně jako alza (viz v příloze), kde lze naklikat jen do filtrů to, co tam mají (tedy zobrazovat počty podle aktuálního vybrání). Lze si toto vytáhnout jedním SQL dotazem? Používám Entity Framework, nepíšu přímo SQL dotazy. Používám MSSQL databázi.

Zkusil jsem: Zatím to mám pro každé pole zvlášť, takže těch dotazů na db je mnoho. Je potřeba si uvědomit, že když potřebuji počty pro "šířky pneumatik", tak tam nemůžu zahrnout aktuálně vybranou šířku. Takže "zdroj" dat je vždy jiný pro každé pole, vždy tam vyjmu tu hodnotu, pro kterou potřebuji počty získat.

var widthOptions = productsExceptWidths //vrací IQueryable<Product>
                       .Where(s => s.TireWidth != null)
                       .GroupBy(s => new { s.TireWidth })
                       .Select(group =>
                               new ProductSearchOption(group.Key.TireWidth ?? 0, group.Key.TireWidth.ToString(), group.Count())
                       ).ToList();
          model.Widths.AddRange(widthOptions);

Tady získám počty pro šířky pneumatik. TireWidth je integer

var heightOptions = productsExceptHeights
    .Where(s => s.TireHeight != null)
           .GroupBy(s => new { s.TireHeight })
           .Select(group =>
                   new ProductSearchOption(group.Key.TireHeight ?? 0, group.Key.TireHeight.ToString(), group.Count())
           ).ToList();
model.Heights.AddRange(heightOptions);

atd pro každé pole ve formuláři

Chci docílit: Potřebuji co nejrychleji dostat tyto počty z databáze. Přidal jsem k těmto vlastnostem INDEX. Co dále můžu udělat? Díky

 
Odpovědět
1. února 19:46
Avatar
zelvicek
Člen
Avatar
zelvicek:2. února 8:14

Nejsem Alza vývojář, ale předpokládám, že to budou mít nějak předpočítané - např.: MSSql Cube.
Ten katalog je víceméně read-only. Po aktualizaci katalogu prostě vygenerujou nové filtry a počty, ty uloží do separátních tabulek.

 
Nahoru Odpovědět
2. února 8:14
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Adam Gajdečka:2. února 9:30

Je potřeba si uvědomit, že ty počty nelze předvypočíst. Těch kombinací je strašně moc. Když vybereš třeba mobil s NFC, musí ti přepočítat dle toho všechno ostatní. To je prostě blbost. Musí to tahat rovnou z databáze...

 
Nahoru Odpovědět
2. února 9:30
Avatar
zelvicek
Člen
Avatar
Odpovídá na Adam Gajdečka
zelvicek:2. února 11:21

Dobrá, pak se mýlím a nedokážu ti pomoci.

 
Nahoru Odpovědět
2. února 11:21
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.