webForumDet fria alternativet

Varierande sql-fråga

4 svar · 374 visningar · startad av antux

antuxMedlem sedan feb. 20048 inlägg
#1

Hej
Hur ska man bära sig åt för att bygga upp en databasfråga som varierar beroende på vad användaren vill ska vara med. Exempelvis om man ska söka efter bilar, så kanske användaren vill söka på pris, färg, årsmodell osv, och låt säga att det är 20 olika saker. Användaren kan välja alla alternativ som den vill söka på. Om man skulle bygga det i applikationen med dataset, adaptrar och bll:er så skulle man vara tvungen att ha med alla kombinationer av sökningar som kan tänkas göra. Alternativet skulle vara att bygga en sql-fråga direkt från själva sidan. Så min fråga är hur man ska göra på bästa sätt?

freguzMedlem sedan feb. 2005280 inlägg
#2

Bygg sql-satsen med kriterer baserat på vad användaren valt.

Tex dropdowner, med årsmodell
value=0 välj årsmodell
value=1996 1996
...

string sql = "SELECT * FROM cars WHERE Id > 0";

Skapa @Year som sql param

if(ddlYear.SelectedItem.Value != "0")
sql += " AND year = @Year ";

osv...

Ungefär alltså, konceptuellt. Inget hi-tech men det funkar :bire

CatZMedlem sedan jan. 20022 440 inlägg
#3

Jag har en sådan sökfunktion för ordrar i ett orderhanteringssystem som jag skrev i vb.net åt en kund i australien. Har för mig att det blev ca 200 rader kod för att bygga ihop den sql satsen :)

Det beror lite på hur avancerat du vill göra det. Det frequz rekommenderar är helt ok. Börja där och gör den mer avancerad allt eftersom. Det du ska tänka är vad är det minsta jag behöver för att det här ska fungera.. dvs du testar först med ett formulärfält.

WHERE kolumn = @formulärvärde

sedan när du fått det att funka lägger du till nästa

 AND kolumn2 = @formulärvärde2

När du känner att du är färdig med det kan du bygga på ytterligare med LIKE och IN för att tillåta sökning på icke kompletta söksträngar.

Det jag menar är att användaren kan söka på op och få fram Opel.

erkaMedlem sedan dec. 19996 522 inlägg
#4

Skapa en klass/helperklass som heter typ SearchCarParameters, och sedan i din dao eller vad du nu användare bygger upp frågan utifrån dessa parametrar. På det viset lättare att validera alla parametrar och snyggare rent OO-mässigt

CatZMedlem sedan jan. 20022 440 inlägg
128 ms totalt · 3 externa anrop · v20260731065814-full.102f7fcd
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)