PDA

View Full Version : سوال: نوشتن SELECT تو در تو در #C



esy2012
جمعه 02 دی 1390, 23:14 عصر
سلام دوستان عزیز

قبل از ایجاد تاپیک این مطلب رو جستجو کردم ولی به نتیجه نرسیدم :گریه:

دوستان ،من دو تا جدول دارم که میخوام در Data Grid نمایش بدم ولی نمیدونم چطور دوتا Select را با هم بنویسم . دستوراتم به این شکل هستش.

SqlConnection conn1 = new SqlConnection();
conn1.ConnectionString = "Data Source=ESMAIL-PC\\SQLEXPRESS;Initial Catalog=EJMProject;Integrated Security=True";
conn1.Open();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand = conn1.CreateCommand();
sqlCommand.CommandText = "select ...";
SqlDataAdapter sda = new SqlDataAdapter(sqlCommand.CommandText, ("Data Source=ESMAIL-PC\\SQLEXPRESS;Initial Catalog=EJMProject;Integrated Security=True"));
DataTable dTable = new DataTable();
sda.Fill(dTable);
BindingSource bSource = new BindingSource();
bSource.DataSource = dTable;
dataGridView1.DataSource = bSource;
conn1.Close();

اگه لطف کنید دستور Insert را هم بگید ممنون میشم:افسرده:

M.Rahi
جمعه 02 دی 1390, 23:43 عصر
سلام
لطفا اسم 2 تیبل به همراه فیلدها رو بگید تا براساس اونا کوئری را بنویسیم.

uniqueboy_ara
جمعه 02 دی 1390, 23:48 عصر
با استفاده از دستور join میتونی به چیزی که میخوای برسی!

esy2012
جمعه 02 دی 1390, 23:51 عصر
سلام

TBL_SaveFactorForoshMaster (SomareFactor,CodeCustomer,Date,Address)
TBL_SaveFactorForoshDeitel(IDDeitel,CodeKala,NameK ala,Tedad,Geymat,SomareFactor)

ممنونم:خجالت:

uniqueboy_ara
شنبه 03 دی 1390, 00:04 صبح
میتونی اینجوری بنویسی
select TBL_SaveFactorForoshMaster.SomareFactor, CodeCustomer, Date, Address, IDDeitel, CodeKala, NameKala, Tedad, Geymat from TBL_SaveFactorForoshMaster innerjoin TBL_SaveFactorForoshDeitel on TBL_SaveFactorForoshMaster.SomareFactor=TBL_SaveFa ctorForoshDeitel.SomareFactor

و یا به صورت ساده تر ( نکته: در این حالت 2تا SomareFaktor برگردونده میشه )

select* from TBL_SaveFactorForoshMaster innerjoin TBL_SaveFactorForoshDeitel on TBL_SaveFactorForoshMaster.SomareFactor=TBL_SaveFa ctorForoshDeitel.SomareFactor

zarrinnegar
شنبه 03 دی 1390, 00:05 صبح
select t1.SomareFactor,t1.CodeCustomer,t1.Date,t1.Address ,
t2.IDDeitel,t2.CodeKala,t2.NameK ala,t2.Tedad,t2.Geymat
from TBL_SaveFactorForoshMaster as t1
inner join TBL_SaveFactorForoshDeitel as t2
on t1.SomareFactor=t2.SomareFactor

M.Rahi
شنبه 03 دی 1390, 00:08 صبح
یه چیزی تو این مایه ها میشه:

Select CodeCustomer,Date,Address,IDDetail,CodeKala,NameKa la,Tedad,Gheymat From TBL_SaveFactorForoshMaster as ffm INNER JOIN TBL_SaveFactorForoshDeitel as ffD ON ffm.ShomareFactor=ffd.ShomareFactor

شما میتونید چندین جدول را با توجه به کلیدهایی که تعریف کردید باهم join کنید و اطلاعات جداول را نمایش دهید.
موفق باشید

esy2012
شنبه 03 دی 1390, 00:22 صبح
سلام
دوستان ممنونم از جوابهایی که بنده مرحمت فرمودین:خجالت:

اگه امکان داشته باشه این سوال هم جواب بدین ، دیگه چون میخوام پروژمو تحویل بدم وقت جستجو تو تایپیک ها رو ندارم .

using (var cmd2 = new SqlCommand("select top 1 SomareFactor from TBL_SaveFactorForoshMaster order by SomareFactor desc", conn1))
{
IDENTITYIDSomareFactor = (cmd2.ExecuteScalar() ?? string.Empty).ToString();
}

تو این دستور میخوام به متغییر رشته ای که تعریف کردم یک واحد اضافه کنم تا شماره فاکتور جدید رو بدست بیارم ،ولی نمیدونم چطوری تبدیل به عددی کنم و بعدش تبدیل به رشته کنم و در متغییر ذخیره کنم؟

ممنون میشم اگه زود راهنمایی کنید:افسرده:

zarrinnegar
شنبه 03 دی 1390, 00:22 صبح
کارت راه افتاد ولی این select تو در تو نیست

در واقع select های تو در تو select هایی هستند که شما یه نتیجه ای را با یک select بدست میاری و از اون دستور توی select دیگه استفاده میکنی

مثلا میخواهیم بدانیم مشتریانی که بالای 5000000 خرید کرده اند چه کسانی هستند و از بین این خریداران چه کسانی کالای x را خریده اند و مثالهایی پیچیده که بزرگترین مبلغ خریداری شده هر خریدار و ...

که واقعا 2 یا چند دستور select نوشته شود

دستورات بالا فقط join بین 1 یا چند جدول است

M.Rahi
شنبه 03 دی 1390, 00:26 صبح
برای تبدیل رشته به عدد از تابع Convert.ToInt32 استفاده کن.
موفق باشی