PDA

View Full Version : ادغام دو جدول



khomar
دوشنبه 02 آذر 1388, 10:21 صبح
سلام
من یک بانک اطلاعاتی سی دی دارم که اطلاعات سی دی مثل نام و کد و... داخلش هست. و از انجایی که داخل هر سی دی ممکنه نرم افزار های مختلفی وجود داشته باشه و برای عدم افرونگی کد هر سی همراه نرم افزارهاش توی یک جدول دیگه ذخیره کردم. اما الان برای نمایش دچار مشکل شدم. اصولا این جور اطلاعات چه جوری نمایش میدن یعنی اصلا می یان ادغام کنند؟ یا نه؟ اگه ادغام می کنند چه جوری؟(با گروپ بای ... توی دستورات اس کیو ال باید انجام بشه دیگه؟)

Del Aram
دوشنبه 02 آذر 1388, 11:04 صبح
دوست عزیز
شما می بایستی از دستور JOIN به منظور اتصال جداول استفاده نمایید.
JOIN از پرسش های چند جدولی، و درواقع پیوند به شرط تساوی می باشد.
ولی
هر گاه خواستید، از پرسش های خلاصه بهره گیرید. پای GROUP BY وسط می آید.منظورم از پرسش های خلاصه، در واقع همان Aggregate Functions می باشد. مواردی همچون توابع ستونی، محاسبه جمع کل یک ستون، محاسبه میانگین یک ستون، شمارش داده ها و مواردی از این قبیل .
سعی کردم تا حد ممکن ساده بیان نموده باشم.

pourang_us
دوشنبه 02 آذر 1388, 11:11 صبح
دوست عزیز
درود
شما میتونی برای دیدن نتیجه البته اگر به صورت منطقی جداولت رو طراحی کرده باشی در حالت نرمال از یک Select ساده که به روی هر دوتا جدول زدی استفاده کنی
در حالتهای بعدی از Join های سه گانه استفاده کنی
اما در مورد Group By برای مواردی هست که شما از توابع مثل sum در Selectet استفاده میکنی
اگر راه حل به نظرتون مناسب نیست جداولتون رو بفرمایید تا شمای Script رو بشه راحت تر براتون ترسیم کرد


موفق باشی

khomar
دوشنبه 02 آذر 1388, 11:18 صبح
دوست عزیز
درود
شما میتونی برای دیدن نتیجه البته اگر به صورت منطقی جداولت رو طراحی کرده باشی در حالت نرمال از یک Select ساده که به روی هر دوتا جدول زدی استفاده کنی
در حالتهای بعدی از Join های سه گانه استفاده کنی
موفق باشی

اگه می شه با یه select ساده این کار کرد می شه یه نمونه بزارید؟! مرسی.

pourang_us
دوشنبه 02 آذر 1388, 11:51 صبح
دوست عزیز
برای مثال من دو جدول رو در نظر میگیرم tbl1 و tbl2
که جدول tbl1 شامل دو فیلد Id و Name هست
و جدول tbl2 شامل سه فیلد Id و Id_tbl1 و Discription

حال برای دیدن نام از جدول اول به همراه Discription به صورت زیر است:

Select A.Name, B.Discription
From tbl1 a, tbl2 b
where
b.id_tbl1 = a.id

Navid Asadi
دوشنبه 02 آذر 1388, 17:53 عصر
آقا
فرض کن من دوتا بانک دارم دقیقا با یه ساختار...
یکی با نام Base1 و دیگری با نام Base2...
تو هر دوتا جدولی با نام TB هست که فیلد های برابر دارند...
خوب من میخوام وقتی رو یه دکمه کلیک می کنیم یه بانک دیگه یجای دیگه درست بشه که جدول TB رو داشته باشه و اطلاعات هر دو جدول توش باشه...
یا وقتی رو یه دکمه کلیک کردم اطلاعات هر دو جدول تو یه دیتا گرید ریخته بشه...
چیکار کنم؟

khomar
جمعه 06 آذر 1388, 13:15 عصر
دوست عزیز
برای مثال من دو جدول رو در نظر میگیرم tbl1 و tbl2
که جدول tbl1 شامل دو فیلد Id و Name هست
و جدول tbl2 شامل سه فیلد Id و Id_tbl1 و Discription

حال برای دیدن نام از جدول اول به همراه Discription به صورت زیر است:

Select A.Name, B.Discription
From tbl1 a, tbl2 b
where
b.id_tbl1 = a.id

ممنون از راهنماییتون و پیشاپیش عید قربان مبارک
چند تا سوال دیگه هم دارم

اگه از کد شما استفاده کنم چه جوری تو گرید نمایش بدم؟
این کد سرچ من فقط برای Tbl1 است حالا اگه قرار باشه tbl2 با tbl1 پیوند بشه برای این که بتونم توی دیتا گرید نمایش بدم باید کدم چه جوری اصلاح کنم؟
مشکل من الان سرچ نیست نمی دونم گرید چه جوری اطلاعت رو نمایش می ده و چه جوری باید براش کد بنویسم.
Dim strsqlc As String = "select * from cd where"
If TextBox6.Text <> "" Then
strsqlc += " (code_cd='" + TextBox6.Text + "')"
End If
If TextBox7.Text <> "" Then
If strsqlc.Length > 22 Then
strsqlc += " And "
End If
strsqlc += " (name='" + TextBox7.Text + "')"
End If

If strsqlc.Length = 22 Then
strsqlc = strsqlc.Remove(17, 5)
End If
dt = db.myselect(strsqlc)

If dt.Rows.Count.ToString = 0 Then
'MessageBox.Show("هیج موردی یافت نشد")
Label7.Text = "هیج موردی یافت نشد"
' DataGrid1.DataSource = dt
DataGridView1.DataSource = dt
DataGridView1.Columns(0).HeaderText = "کد سی دی "
DataGridView1.Columns(1).HeaderText = "نام سی دی"
DataGridView1.Columns(2).HeaderText = "نوع"
DataGridView1.Columns(3).HeaderText = "تعداد سی دی"
DataGridView1.Columns(4).HeaderText = "ورژن"
Else
' MessageBox.Show(" یافت شد " + dt.Rows.Count.ToString)
Label7.Text = dt.Rows.Count.ToString + " سی دی یافت شد"
'DataGrid1.DataSource = dt
DataGridView1.DataSource = dt
DataGridView1.Columns(0).HeaderText = "کد سی دی "
DataGridView1.Columns(1).HeaderText = "نام سی دی"
DataGridView1.Columns(2).HeaderText = "نوع"
DataGridView1.Columns(3).HeaderText = "تعداد سی دی"
DataGridView1.Columns(4).HeaderText = "ورژن"
End If

' con.Close()

با کد زیر بعضی اطلاعاتم به تکس باکس بایند می کنم حالا اگه دو تا تیبل بشه که قرار با هم اغام بشه باید برای تیبل دومی هم متغیییری مثل sttsql که برای تیبل اول تعریف کردم تعریف کنم و کدش مثل کد زیر بنویسم؟

strsql = "select * from cd"
cmd.Connection = con
cmd.CommandText = strsql
DR = cmd.ExecuteReader
DR.Read()
TextBox6.Text = DataGridView1.CurrentRow.Cells("code_cd").Value
TextBox7.Text = DataGridView1.CurrentRow.Cells("name").Value
ComboBox2.Text = DataGridView1.CurrentRow.Cells("type").Value
TextBox8.Text = DataGridView1.CurrentRow.Cells("many").Value
TextBox9.Text = DataGridView1.CurrentRow.Cells("vertion").Value

khomar
چهارشنبه 11 آذر 1388, 19:58 عصر
یعنی هیچ کس نیست جواب بده؟:متفکر:

khomar
یک شنبه 15 آذر 1388, 11:01 صبح
خوب لابد نیست دیگه!!!!!!!!!!!!!!

ACorvinus
یک شنبه 15 آذر 1388, 12:15 عصر
سلام .

خوب عزیزم میتونی روی Join شرط بزاری .




SELECT [CDInformation_T].[CDName_nvc], [ProgramsInfo_T].[Program_bit], [ProgramsInfo_T].[Music_bit], [ProgramsInfo_T].[Name_nvc]
FROM [CDInformation_T]
LEFT OUTER JOIN [ProgramsInfo_T]
ON [CDInformation_T].[CDID_bint]=[ProgramsInfo_T].[CDID_bint]
WHERE [CDInformation_T].[CDName_nvc] = 'American Pie 7.0'



برای آگاهی بیشتر از نحوه کار LEFT OUTER JOIN یا سایر JOIN ها به آدرس زیر مراجعه کن:


http://www.w3schools.com/sql/sql_join.asp


موفق باشی .