View Full Version : حرفه ای: join دو جدول
teymoorei
دوشنبه 09 آبان 1390, 14:33 عصر
سلام
دو تا جدول دارم با یک فیلد مشترک به نام numreg ، در یک جدول اطلاعات مشتری ذخیره میشه و در یکی دیگه فیش هایی که تا حالا آورده ، در ضمن در هر دوره مشتری یک فیش میاره یعنی یک فیلد در جدول فیش ها به نام numdoreh دارن .
حالا می خوام بازدن شماره دوره ببینم در این دوره چه افرادی فیش نیاورده اند .
من این کد رو نوشتم و جواب هم درست هستش اما اسم افراد رو به تعداد دفعاتی که فیش آوردن چاپ می کنه ، ممکنه یکی 100 تا فیش آورده باشه و 100 بار اسمش چاپ میشه .
اینم کد من :
"Select numpri,numhr,namepar,tarikhpar,tarikhsah,tblregist er.family,tblregister.numreg From tblregister join tblfish2 on tblregister.numreg=tblfish2.numreg Where numdoreh != N'" & TextBox2.Text & "'"
لطفا کمک کنید .
teymoorei
سه شنبه 10 آبان 1390, 08:32 صبح
دوستان لطفا کمک کنید.
کجایند این برنامه نویسای حرفه ای سایت
hf1988
سه شنبه 10 آبان 1390, 11:36 صبح
ببین دوست عزیز شما باید از ایجاد مقادیر تکراری جلوگیری کنی تنها کاری هم که میتونی بکنی اینه که از دستور group by اسفاده کنی
مثلا فرض کن 2 تا جدول داریم یکی جدول سفارشات یکی هم جدول مشتری . جدول مشتری 3 تا فیلد داره یکی ID ,FirstName ,LastName جدول سفارشات هم 3 تا فیلد ID,OrderName ,CustomerFK
حالا گه یه مشتری پیدا بشه که کلی سفارش داره اما سفارشهای تکراری مثلا از یه کیف چند تا سفارش داره حالا اگه بخوایم اون مقادیر تکراری 1 بار نمایش داده بشن باید یه همچین کاری کنیم یعنی
بر حسب نام مشتری دسته بندیش کنیم .
select c.FirstName,c.LastName from Customers c inner join Orders o on c.Id=o.CustomerFK where o.OrderName ='bag' group by c.FirstName,c.LastName
موفق باشید.:چشمک:
teymoorei
سه شنبه 10 آبان 1390, 11:56 صبح
سلام
ممنون از توجه تون
این کد منه :
"Select numpri,numhr,namepar,tarikhpar,tarikhsah,tblregist er.family,tblregister.numreg From tblregister join tblfish2 on tblregister.numreg=tblfish2.numreg Where numdoreh != N'" & TextBox2.Text & "' group by tblregister.numreg"
اما بازم کار نمیکنه دیگه حالمو گرفته
hf1988
سه شنبه 10 آبان 1390, 12:22 عصر
سلام
ممنون از توجه تون
این کد منه :
"Select numpri,numhr,namepar,tarikhpar,tarikhsah,tblregist er.family,tblregister.numreg From tblregister join tblfish2 on tblregister.numreg=tblfish2.numreg Where numdoreh != N'" & TextBox2.Text & "' group by tblregister.numreg"
اما بازم کار نمیکنه دیگه حالمو گرفته
شما الان کوئریت ایراد داره باید فقط فیلدهایی که در group by لحاظ میشن رو بعد از select بیاری یه همچین چیزی.
Select t1.tblregist er.family,t1.numreg From tblregister t1 join tblfish2 t2 on t1.numreg=t2.numreg Where t1.numdoreh != N'" & TextBox2.Text & "' group by t1.tblregist ,t1.numreg "
Sundown
چهارشنبه 11 آبان 1390, 14:33 عصر
روش درست روشی که hf1988 فرمودند که اصولی تر هست اما با قبول یکم سربار بیشتر میتونی از متد distinct استفاده کنید.
مثال:
var
q = (
from c in db.Customers
select c.City )
.Distinct();
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.