PDA

View Full Version : سوال: نحوه ترکیب کوئری ها



بیتا حکمت
شنبه 12 اردیبهشت 1394, 17:36 عصر
سلام . بهترین روش برای اینکه کوئری های متفاوت رو ترکیب کنیم و جواب رو به دست بیاریم چه روشی است . به این صورت نوشتم خطا داد




SqlCeConnection connsoal = new SqlCeConnection(puclicclass.strcon);
connsoal.Open();
string strquery = "SELECT ID_subgroups FROM subgroups Where Name='" + comboBox3.SelectedItem.ToString() + "' And user_code=" + puclicclass.current_user_code;
strquery=strquery+";"+
"SELECT ID_subgroups FROM subgroups Where Name='" + comboBox4.SelectedItem.ToString() + "' And user_code=" + puclicclass.current_user_code;
SqlCeCommand comm10 = new SqlCeCommand(strquery, connsoal);
SqlCeDataReader readerm = comm10.ExecuteReader();


// MessageBox.Show(reader.GetName(4), reader.GetName(1));

while (readerm.Read())
{

// MessageBox.Show(readerm.GetInt32(0).ToString());
groupid_Mabda = readerm.GetInt32(0);
groupid_mgasd = readerm.GetInt32(0);


}





متن خطا :


There was an error parsing the query. [ Token line number = 1,Token line offset = 75,Token in error = SELECT ]

ghasem110deh
شنبه 12 اردیبهشت 1394, 19:10 عصر
سلام
البته بهترین رو نمیدونم ولی من واسه ترکیب چند کوئری از جروسیجر استفاده می کنم !
دستورات و کوئری های مختلف رو میدم ... (اگه همه یه فیلد مشترک مث کلید خارجی داشته باشن که راحته) در غیر اینصورت یکی تو در تو میشه !
در کل اگه کدها رو مستقیم پشت کلید ننویسید بهتره !؟
.
.
.
این نمونه است (دو تا جدول کلید دارن ولی سومی هیچ ربطی به جدولهای دیگه نداره) ولی باهم جوین شدن ...
بجای جوین کوئری های دیگه ای میشه زد !


-- Get the grouped data from TBuy into CTE T1...
With T1(Kala, tedadkala, andaz, kalakol)
AS
(
SELECT Kala, Count(Kala), SUM(Andaze), SUM(Kol)
from TBuy GROUP BY Kala
),

-- Get the grouped data from TSel into CTE T2...
T2(Kala, tedadkala2, andaz2, kalakol2)
AS
(
SELECT Kala, Count(Kala), SUM(Andaze), SUM(Kol)
from TSel GROUP BY Kala
)
-- Use the CTEs in the overall query
select
dbo.TAnbar.Anbar as anbar,
dbo.TAnbar.Kalatype as noekala,
dbo.TKala.Cod as cod,
dbo.TKala.Kala as kala,
dbo.TKala.Vahed as vahed,
dbo.TKala.Toz as tozi,
dbo.TKala.Mojodi as mojodi,
dbo.TKala.Pic as pict,
tedadkala,
andaz,
kalakol,
tedadkala2,
andaz2,
kalakol2

From dbo.TAnbar
inner join dbo.TKala on dbo.TAnbar.Anbar = dbo.TKala.Anbar
inner join T1 on T1.Kala = TKala.Kala
inner join T2 on TKala.Kala = T2.Kala
where dbo.TKala.Kala = @kala
--NB NO group by here


اگر هم بخوایم با چندکوئری مختلف دستورات رو چند جدول اعمال کنیم ... با کمی تغییرات جواب میده !

بیتا حکمت
شنبه 12 اردیبهشت 1394, 19:22 عصر
جناب @ghasem110deh (http://barnamenevis.org/member.php?330388-ghasem110deh) ممنونم . اما تا جایی که می دونم sql compact از پروسجرها پشتبیانی نمی کنه . البته نحوه استفاده از پروسجر رو بلد نبودم . ممنون که گفتین

aminmousavi
یک شنبه 13 اردیبهشت 1394, 18:27 عصر
سلام .
اگر منظورتون کوئری گرفتن از یک جدول هست برای نمونه کدی که گزاشتید میتونین از روش زیر استفاده کنین :


string strquery = "SELECT ID_subgroups FROM subgroups ";
List<string> conditon = new List<string>();


conditon.Add(" ( Name='" + comboBox3.SelectedItem.ToString() + "' And user_code=" + puclicclass.current_user_code+" ) ");
conditon.Add(" ( Name='" + comboBox4.SelectedItem.ToString() + "' And user_code=" + puclicclass.current_user_code+") ");
if (conditon.Count > 0)
{
strquery = " WHERE ";
for (int i = 0; i < conditon.Count; i++)
{
if (i != 0)
{
strquery += " OR ";
}
strquery += conditon[i];
}
}

ali_72
دوشنبه 14 اردیبهشت 1394, 08:27 صبح
از entity یا linq استفاده کن دیگه راحت شی