PDA

View Full Version : سوال: ایجاد join در دیتابیس sql server 2008 r2



h.rezaee
یک شنبه 13 اسفند 1391, 09:42 صبح
سلام بر دوستان.بنده روند کلی رو میگم هر کجا که اشتباه کردم ممنون میشم راهنمایی کنید. . ببینید ما یک دیتابیس داریم به اسم fajr ، این جدول دارای چندین جدول هستش. یکی از جدول ها nametbl هستش که id، نام ، نام خانوادگی و نام پدر ثبت نام کننده رو ذخیره می کنه. یک تیبل به نام numtbl داریم که id ،شماره تلفن ، همراه کاربر رو ذخیره میکنه. یک table هم به اسم maintbl داریم که برای ایجاد ارتباط بین تیبل هاست. این تیبل id, nameid ، numid داره که همشون از نوع int هستن. بعد id جدول nametbl به nameid متصله. id مربوط به numtbl به numid جدول maintbl وصل میشه. بعد برای کوئریش هم این کد رو نوشتم.

private void searchbtn_Click(object sender, EventArgs e)
{
SqlConnection objconnection = new SqlConnection("Data Source=localhost;Initial Catalog=fajr;Integrated Security=True");
DataSet das = new DataSet();
DataView objdataview = new DataView();
SqlCommand com = new SqlCommand();
SqlDataReader re;



if (searchtxt.Text == string.Empty)
{
MessageBox.Show("عبارت خود را وارد کنید.");
}
else
{

objconnection.Open();
com.Connection = objconnection;
com.CommandText = "Select name from dbo.nametbl " +
"JOIN maintbl ON nametbl.nameid = maintbl.nameid " +
"JOIN maintbl ON numtbl.numid = maintbl.numid " +
"WHERE (name=@name)";
com.Parameters.AddWithValue("@name", searchtxt.Text);
re = com.ExecuteReader();
if (re.Read())
{
Form1 a = new Form1();
a.ShowDialog();
this.Close();

}
else
{
MessageBox.Show("کاربر گرامی مقادیر را درست وارد نمایید");
}
}

منتها خطا میده!!!!!!!!!!!!!!!!!!!!!!!!!!! عکسش رو پایین میزارم ممنون میشم راهنمایی کنید.

veniz2008
یک شنبه 13 اسفند 1391, 09:58 صبح
سلام.
وقتی میخواید 3 جدول رو با هم join کنید، ابتدا جدول اول و دوم رو join میکنید (تا اینجا درست نوشتی)، نتیجه این join شدن میشه یه جدول. حالا باید این جدول نتیجه رو با جدول سوم دوباره join کنی تا نتیجه نهایی بدست بیاد (اینجا رو اشتباه کردی و اومدی دوباره با maintbl که قبلا join شده، دوباره join کردی).
اینطوری بنویس :

com.CommandText = "Select name from dbo.nametbl " +
"JOIN maintbl ON nametbl.nameid = maintbl.nameid " +
"JOIN numtbl ON numtbl.numid = maintbl.numid " +"WHERE (name=@name)";
یه سوال : این همه join کردی که فقط یه ستون رو نمایش بدی؟؟؟؟ (منظورم ستون name هست)

majidrezaei2007
یک شنبه 13 اسفند 1391, 11:32 صبح
نحوه طراحی بانکتون صحیح نیست
نرمال سازی رو روی جداولتون اعمال نکردید

h.rezaee
یک شنبه 13 اسفند 1391, 18:50 عصر
یه سوال : این همه join کردی که فقط یه ستون رو نمایش بدی؟؟؟؟ (منظورم ستون name هست)
سلام نه این رو برای تست نوشته بودم که ببینم چه جوریه که با مشکل مواجه شدم. 10 تا تیبل دارم که از هر کدومشون 2 تا 3 تا ستونش رو می خوام نمایش بدم.

h.rezaee
یک شنبه 13 اسفند 1391, 18:52 عصر
نحوه طراحی بانکتون صحیح نیست
نرمال سازی رو روی جداولتون اعمال نکردید
لطف می کنید بگید ؟؟؟؟؟؟؟؟؟؟؟؟؟!!!!!!!!!!!!!!!!!!!!!