PDA

View Full Version : عدم درست اجرا شدن دستور اسكيوال؟ ببينيد!



patrick5053
یک شنبه 08 اردیبهشت 1392, 15:20 عصر
SELECT * FROM Table where ID>0 and kodeshakhs='1' and kodekala='1' or kodekala='2'
وقتي اجرا ميشه مياد كدهاي كالاهاي ديگه و اشخاص ديگه رو هم فيلتر ميكنه.
مثلا كد شخصي برابر 87 هست و كد كالايي برابر 11 ، همه اينها رو هم به فيلتر اضافه ميكنه. كسي ميدونه چرا؟

hamid_hr
یک شنبه 08 اردیبهشت 1392, 15:27 عصر
SELECT * FROM Table where ID>0 and kodeshakhs='1' and( kodekala='1' or kodekala='2')

bobrus
یک شنبه 08 اردیبهشت 1392, 15:37 عصر
اول اینکه هیچ وقت کدهای اینجوری رو کاراکتر نگیر و اگر لازمه بهش یه id بده که مثلا از Int باشه بخاطر اینکه وقتی حجم دیتابیس میره بالا جستجو و کوری زدن بیسار کند و زمانبر میشه و سیستم ریسورست بالا میره
بعدم وقتی از or استفاده میکنی باید شرایط قبلی و بعدیش پرانتز باشه تا دقیقا مشخص بشه که این شرط or با چه پارامترهایی قرار انجام بشه(------)or(--------) ویا خودش داخل پرانتز باشه مثل کاری که آقای hamid_hr کرده

patrick5053
یک شنبه 08 اردیبهشت 1392, 15:41 عصر
دمت گرم دوست عزيز

patrick5053
یک شنبه 08 اردیبهشت 1392, 15:51 عصر
دوستان حالا كه بزرگواري كردين و كمك كردين اين قسمتش رو هم كمك كنين ممنون ميشم
توي اين دستور چطوري پرانتزهايي رو كه گفتين اعمال كنم چون من مقادير جستجو رو از چند تري ويو پيدا ميكنم.
foreach (TreeNode n in treeView3.Nodes)
{
if (n.Checked)
{
if (i == 0)
queryDoc += " and ";
else
queryDoc += " or ";
i++;
queryDoc += "kod=" + "'" + n.Text + "')";
}
}

patrick5053
یک شنبه 08 اردیبهشت 1392, 15:53 عصر
string queryDoc="" ;
foreach (TreeNode n in treeView3.Nodes)
{
if (n.Checked)
{
if (i == 0)
queryDoc += " and ";
else
queryDoc += " or ";
i++;
queryDoc += "kod=" + "'" + n.Text + "'";
}
}