نقل قول: نوشتن این کوئری با EF
به نظرم اگه بتونید عکسی از موجودیت هاتون رو اینجا قرار بدید راحت تر بشه کمک کرد.
3 ضمیمه
نقل قول: نوشتن این کوئری با EF
در جدول خرید فیلد id_group_factorkharid کلید خارجی از جدول گروه خرید هست (فیلد id)
در جدول گروه خرید فیلد id_tarafhesab کلید خارجی از جدول طرف حساب می باشد
حالا چه کوئری بنویسم تا اگر کاربر id_group_factorkharid را 12 زد ، نام طرف حساب آنرا بر گردانم؟
نقل قول: نوشتن این کوئری با EF
باید سه تا table رو با هم Jion کنین
و شرطتون هم این باشه ک اگ id جدول طرف حسابتون 12 بود نامش رو برگردونه
نقل قول: نوشتن این کوئری با EF
نیاز نیست از ویو استفاده کنم؟
نقل قول: نوشتن این کوئری با EF
نه
با ی jion ساده کارتون راه میوفته
البته این نظر منه
نقل قول: نوشتن این کوئری با EF
پس ویو ها در کجا کاربرد داره؟
نقل قول: نوشتن این کوئری با EF
سلام این کمکت میکنه
Select Name_TarafHesab=(Select Name From Tarafhesab where ID =(Select Id_tarafhesab from group_kharid where id =(select id_factorKharid from kharid where id =adadedelkhah)
نقل قول: نوشتن این کوئری با EF
اینم تابع Join دوتا Table ک خروجیش ی لیست از نوع کلاسه
امیدوارم مفید باشه
public List<UserMemberOfInfo> GetMemberOfUser(int userId)
{
using (var db=new ERP_Main())
{
var result = from userRole in db.UserRoles
join role in db.Roles on userRole.Role_Id equals role.Role_Id
where userRole.User_Id == userId && role.Removed == false
select new UserMemberOfInfo()
{
RoleId = role.Role_Id,
Name = role.Name,
Description = role.Description
};
return result.ToList();
}
نقل قول: نوشتن این کوئری با EF
نقل قول:
نوشته شده توسط
gilas1368
اینم تابع Join دوتا Table ک خروجیش ی لیست از نوع کلاسه
امیدوارم مفید باشه
public List<UserMemberOfInfo> GetMemberOfUser(int userId)
{
using (var db=new ERP_Main())
{
var result = from userRole in db.UserRoles
join role in db.Roles on userRole.Role_Id equals role.Role_Id
where userRole.User_Id == userId && role.Removed == false
select new UserMemberOfInfo()
{
RoleId = role.Role_Id,
Name = role.Name,
Description = role.Description
};
return result.ToList();
}
میشه توضیح بدید داره چیکارا انجام میشه
نقل قول: نوشتن این کوئری با EF
نقل قول:
نوشته شده توسط
gilas1368
اینم تابع Join دوتا Table ک خروجیش ی لیست از نوع کلاسه
امیدوارم مفید باشه
public List<UserMemberOfInfo> GetMemberOfUser(int userId)
{
using (var db=new ERP_Main())
{
var result = from userRole in db.UserRoles
join role in db.Roles on userRole.Role_Id equals role.Role_Id
where userRole.User_Id == userId && role.Removed == false
select new UserMemberOfInfo()
{
RoleId = role.Role_Id,
Name = role.Name,
Description = role.Description
};
return result.ToList();
}
userRole چیه؟
نقل قول: نوشتن این کوئری با EF
شما یک کوئری شبیه به این نیاز دارید :
var query = (from p in kharid
join n in goruhkharid on p.id_group_factorkharid equals n.id_tarafhesab into pn
where pn.id_group_factorkharid == 12
from c in pn
join d in tarafhesab on c.id_tarafhesab equals d.id
select new {d.name_tarafhesab}).Single();
نقل قول: نوشتن این کوئری با EF
نقل قول:
نوشته شده توسط
csharpprogramer88
userRole چیه؟
UserRoler اسم جدول منه
Role هم همینطور
نقل قول: نوشتن این کوئری با EF
نقل قول:
نوشته شده توسط
Direlap
شما یک کوئری شبیه به این نیاز دارید :
var query = (from p in kharid
join n in goruhkharid on p.id_group_factorkharid equals n.id_tarafhesab into pn
where pn.id_group_factorkharid == 12
from c in pn
join d in tarafhesab on c.id_tarafhesab equals d.id
select new {d.name_tarafhesab}).Single();
join n in goruhkharid
منظور از n چیه؟
نقل قول: نوشتن این کوئری با EF
نقل قول:
نوشته شده توسط
csharpprogramer88
join n in goruhkharid
منظور از n چیه؟
n یک متغیری هست که ما خودمون اسمشو تعیین میکنیم و هدف از به کار بردنش مثل ایجاد نمونه ای از یه جدوله.
در اینجا n رو میسازیم از یک جدول به نام goruhkharid تا به فیلد های اون جدول دسترسی داشته باشیم.
نقل قول: نوشتن این کوئری با EF
با سلام.
با فرض اینکه یک پایگاه داده به نام JoinTest روی سرور وجود دارد؛ کد زیر یک جدول به نام costomer با دو فیلد id و name و یک جدول به نام facter با دو فیدل id و costomerId روی آن ایجاد می کند. در اولین query نام costomerی که مربوط به facterشماره 1 است گرفته و نمایش داده می شود و در ادامه یک view برای نمایش شماره فاکتور و نام مشتری مربوطه ساخته می شود:
//in the name of god
//اللهم صل علی محمد و آل محمد
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.VisualBasic;
using System.Data.SqlClient;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SqlConnection connection =new SqlConnection(@"server=.\sqlexpress;integrated security=true;database=jointest;");
SqlCommand Command = new SqlCommand("", connection);
connection.Open();
Action<string> execute =(string sql) => { Command.CommandText = sql; Command.ExecuteNonQuery(); };
execute("if(exists(select name from sys.tables where name='costomer')) drop table costomer;");
execute("if(exists(select name from sys.tables where name='factor')) drop table factor;");
execute("create table costomer(id int identity,name nvarchar(50))");
execute( "create table factor (id int identity,costomerID int)");
execute("insert into costomer values('costomer1')");
execute( "insert into factor values (1)");
execute("insert into costomer values('costomer2')");
execute("insert into factor values(2)");
Command.CommandText = "select cost.name from dbo.costomer cost join dbo.factor fact on cost.id=fact.costomerID where fact.id=1";
SqlDataReader reader = Command.ExecuteReader();
reader.Read();
MessageBox.Show(reader[0].ToString());
reader.Close();
execute("if(exists(select name from sys.views where name='view1')) drop view view1;");
execute("create view view1 as select cost.name, fact.id FactorId from costomer cost join factor fact on cost.id=fact.costomerID");
Command.CommandText=("select * from view1");
dataGridView1.DataSource =new DataTable();
(dataGridView1.DataSource as DataTable).Load(Command.ExecuteReader());
connection.Close();
}
}
}
اگر همین پایگاه داده را با دو جدول گفته شده به صورت entity model داشته باشیم و بخواهیم costomer مربوط به factor شماره یک را بگیریم به این صورت عمل می کنیم:
JoinTestEntities dbo = new JoinTestEntities();
string costomerName = (from cost in dbo.costomers join fact in dbo.factors on cost.id equals fact.costomerID where fact.id == 1 select cost.name).First();
MessageBox.Show(costomerName);
1 ضمیمه
نقل قول: نوشتن این کوئری با EF
نقل قول:
نوشته شده توسط
csharpprogramer88
سلام
با فرض اینکه یک جدول بنام جدول خرید کالا و یک جدول جدا به نام جدول طرف جساب داریم که در جدول خرید کالا اطلاعات خرید کالا ذخیره میشود و در جدول طرف حساب اطلاعات طرف حساب (کسی که از اون کالا خریده ایم)
یکی از فیلد های جدول طرف حساب ، نام طرف حساب میباشد . و یکی از فیلدهای جدول کالا ، شماره فاکتور خرید ،
حال چطوری میتونم با این 2 فیلد ، نام طرف حساب را بدست بیارم؟
مثلا اگه شماره فاکتور خرید 12 بود ، بگه فاکتور 12 برای آقای میرزاییان می باشد ؟
آیا باید از ویو استفاده شود؟
این کوئری برای دریافت اطلاعات:
db_gannadiEntities2 context = new db_gannadiEntities2();
var serv = (from s in context.tbl_kharid
join sa in context.tbl_tarafhesab on s.id_group_factorkharid equals sa.id
where sa.id == 1
select s).ToList();
dataGridView1.DataSource = serv;
واین هم فرم بعد از واکشی اطلاعات:
ضمیمه 109792
1 ضمیمه
نقل قول: نوشتن این کوئری با EF
البته چون امکان ارسال مستقیم نتیجه کوئری به گزارش نیست لذا ابتدا یه دیتاست از نتیجه کوری تشکیل بدین و بعد دیتا تیبل موجود در درون این دیتاست رو به گزارش ارسال کنین :
اینطوری
private void button1_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
DataSet1.ganadiDataTable tb = new DataSet1.ganadiDataTable();
db_gannadiEntities2 context = new db_gannadiEntities2();
var serv = (from s in context.tbl_kharid
join sa in context.tbl_tarafhesab on s.id_group_factorkharid equals sa.id
where sa.id == 1
select s).ToList();
foreach (tbl_kharid item in serv)
{
tb.Rows.Add(item.id, item.id_group_factorkharid, item.meghdarkharid, item.namekala,item.fee);
}
if (serv == null)
{
MessageBox.Show("null");
}
else
{
DataSet Ds = new DataSet();
Ds.Tables.Add(tb);
Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load(System.Windows.Forms.Application.S tartupPath + @"\stirpt.mrt");
stiReport1.RegData(tb);
stiReport1.Compile();
stiReport1.Design();
stiReport1.Show();
}
}
این هم از گزارش با استیمول از همون کوئری جوین شده
ضمیمه 109794