Wpis z mikrobloga

Moje poprzednie pytanie zostało trochę błędnie zinterpretowane i odpowiedzi, które uzyskałem opisywały zagadnienie, które mnie nie interesowało. Dlatego powtarzam pytanie, ale z innym przykładem:

Pytanie do wszystkich #programista15k w szczególności zajmujących się #programowanie #sql

Macie w bazie (np. #mysql #sqlite #postgres ) sporą tabelkę zawierającą produkty wraz z ceną, kategorią i sprzedawcą.

CREATE TABLE products ( id INT, price INT, category TEXT, vendor TEXT );

Użytkownik jako zapytanie podaje:
- listę interesujących go produktów składającą się z kategorii i przedziału cenowego min-max (lista dowolnej długości, kategorie mogą się powtarzać a przedziały nakładać)
- listę sprzedawców (lista dowolnej długości)

Chcemy przefiltrować tabelkę products aby znaleźć tylko te, które znajdują się we wskazanym zakresie cenowym i kategorii oraz są sprzedawane tylko przez wskazanych na liście sprzedawców.

Jak byście to zaimplementowali w wybranym języku programowania ( np. #php #python #java #csharp #rubyonrails #go #rust #perl #nodejs )?

Jak byście to zrobili, żeby użyć prepared statements?

To nie jest praca domowa ani zadanie w pracy jakby co :-) Znam rozwiązanie, ale ciekawi mnie, czy ktoś zaproponuje coś lepszego.

Wołam @globalbus @wielkibanan @zibizz1 @globalbus
  • 4
@mateusza: po pierwsze wypadałoby znormalizowac tabele products. Skoro użytkownik podaje listy to należałoby by stworzyć user defined table types i wykorzystac joiny do filtrowania danych zamiast setek statementow where. Pozniej jeszcze odpowiednio poindexowac i na deser zostaje zoptymalizowac query plan i permissions. Jak masz dobrze zaprojektowana warstwe baz danych to masz z górki i obojętnie ktorym frameworkiem zdecydujesz sie ja zaprezentować kazdy powinien to udźwignąć bez żadnego problemu. I mysle, ze