Sasa Posted December 4, 2009 Report 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
briedis Posted December 4, 2009 Report 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
Sasa Posted December 4, 2009 Author Report 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
briedis Posted December 4, 2009 Report 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
codez Posted December 5, 2009 Report 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
Gints Plivna Posted December 5, 2009 Report 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
Sasa Posted December 5, 2009 Author Report 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
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.