Sasa Posted December 4, 2009 Report Share Posted December 4, 2009 Sveiki, Kā ir labāk pareizāk papildināt sql query ar papildu parametriem sākuma tas ir parasts query, kurš papildināt ar WHERE + AND + AND atkarībā kas ir izvēlēts meņu utt. Man šobrīd ir tā ka ir izveidots string = ""; kurā ierakstās WHERE nosacījums atkarībā no tā, kas ir iekš URL parametriem atrodams. Quote Link to comment Share on other sites More sharing options...
briedis Posted December 4, 2009 Report Share Posted December 4, 2009 Nu jā, nezinu kaut kādu savādāku veidu... Kur problēmas ar šo pašu risinājumu? Parādi kodu varbūt... Quote Link to comment Share on other sites More sharing options...
Sasa Posted December 4, 2009 Author Report Share Posted December 4, 2009 (edited) apmēram kaut kā šādi: QueryString qs = new QueryString(); string sqlAadditional = string.Empty; Utils validate = new Utils(); if (validate.isValid(qs, connectionString, "raz")) { usedFilters.Visible = true; if (string.IsNullOrEmpty(sqlAadditional)) { sqlAadditional += "WHERE razotajs.IDrazotajs = " + qs.GetParameter("raz"); } else { sqlAadditional += " AND razotajs.IDrazotajs = " + qs.GetParameter("raz"); } } Un lieku klāt jau kādam sql'am: Razotajs razotajsDataTable = new Razotajs(); string sqlManufacturer = "SELECT DISTINCT razotajs.IDrazotajs, razotajs.nosaukums FROM materialaparametrs Inner Join razotajs ON materialaparametrs.IDrazotajs = razotajs.IDrazotajs Inner Join materials ON materials.IDmaterials = materialaparametrs.IDmaterials Inner Join materialakategorija ON materialakategorija.IDmaterialaKategorija = materials.IDmaterialaKategorija " + sqlAadditional; DataTable razotaji = razotajsDataTable.getRazotajsFromDB(connectionString, sqlManufacturer); foreach (DataRow manufacturer in razotaji.Rows) { if (!validate.isValid(qs, connectionString, "raz")) { prepereManufacturerFilter(manufacturer); } } Edited December 4, 2009 by Sasa Quote Link to comment Share on other sites More sharing options...
briedis Posted December 4, 2009 Report Share Posted December 4, 2009 imo normāla metode! :) Es ar tāpat esmu darījis - ja pirms tam nav uzstādīts statements, tad kabinu klāt ar " WHERE ..", ja jau eksistē, tad ar " AND .." un pēc tam pielipinu klāt galvenajam nosacījumam... Quote Link to comment Share on other sites More sharing options...
codez Posted December 5, 2009 Report Share Posted December 5, 2009 1)AND nozīmē, ka jāizpildās abiem nosacījumiem. A=3 AND A=4 nekad neizpildīsies, jo A vienlaikus nevar būt 3 un 4. Jālieto OR. 2)Mysql var rakstīt ... WHERE A IN (3,4,7,9,11) ... Quote Link to comment Share on other sites More sharing options...
Gints Plivna Posted December 5, 2009 Report Share Posted December 5, 2009 Ja negrib katru reizi čakarēties ar pārbaudi, vai WHERE klauzā jau kaut kas ir vai nē, tad var uztaisīt noklusēto WHERE klauzu "WHERE 1 = 1" un tad vienmēr droši kabināt klāt ar AND ;) Ģenerētajiem SQL teikumiem tā mēdz itin bieži darīt. Gints Plivna http://datubazes.wordpress.com Quote Link to comment Share on other sites More sharing options...
Sasa Posted December 5, 2009 Author Report Share Posted December 5, 2009 forši, šis varētu atvieglot dažas lietas :) var uztaisīt noklusēto WHERE klauzu "WHERE 1 = 1" un tad vienmēr droši kabināt klāt ar AND ;) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.