PDA

View Full Version : مبتدی: مشکل در دستور ساده Sql



aftabeshargh
دوشنبه 29 اسفند 1390, 09:32 صبح
سلام
دو جدول در دیتابیس دارم tbl_p , tbl_s که وجه مشترکشون کد ملی km هستش " میخوام از هردو جدول اطلاعات یک شخص با کد ملی ای که درtxtkm هست رو بگیرم " دستور sql چطور بنویسم؟

"Select * from tbl_p,tbl_s where tbl_p.km = tbl_s.km and tbl_s.km=" + txtkm.Text

با این دستور اطلاعات افراد زیادی رو نشون میده (در گزارشم در کریستال " در واقع با این دستور میخوام دیتاست رو پر کنم)
دستور sql چطور نوشته میشه ؟

Hybrid
دوشنبه 29 اسفند 1390, 09:51 صبح
سلام ، از دستور Inner join استفاده کن


SELECT Table1.p_name, Table1.p_fname, Table1.p_CodeMeli, Table2.p_PicLocation
FROM Table1 INNER JOIN
Table2 ON Table1.p_id = Table2.p_id
WHERE (Table1.p_CodeMeli = 4190285481)

aftabeshargh
دوشنبه 29 اسفند 1390, 10:09 صبح
سلام
اینجوری نوشتم " رکورد مورد نظر رو فیلتر نکرد بازم
"SELECT * from tbl_s, tbl_p FROM tbl_s INNER JOIN tbl_p ON tbl_s.km = tbl_p.km WHERE tbl_p.km =" + txtkm.Text

Hybrid
دوشنبه 29 اسفند 1390, 10:14 صبح
سلام ، بین جداولت ارتباط برقرار کردی؟

در ضمن به دستور من دقت کن دستورت رو کاملا اشتباه نوشتی.

aftabeshargh
دوشنبه 29 اسفند 1390, 10:31 صبح
تو دیتابیس همون ابتدای کار نام جدول ها رو tbl_s , tbl_p گذاشتم " حالا میخوام namee,family,address,km رو از tbl_s و pic رو از tbl_p بگیرم و km در هردو جدول یکسان هستش و تو برنامه باید km از txtkm.text گرفته شه " خودتون زحمتش رو بکشید لطفا
"SELECT tbl_s_name,tbl_s_family,tbl_s_np,tbl_s_km,tbl_s_re sh,tbl_s_address,tbl_p_pic FROM tbl_s INNER JOIN tbl_p ON tbl_s_km = tbl_p_km WHERE tbl_p_km =" + txtkm.Text

فرید نجفلو
دوشنبه 29 اسفند 1390, 10:55 صبح
SELECT tbl_s.km , tbl_s.address , tbl_s.family , tbl_s.name,tbl_p.pic FROM tbl_s
INER JOIN tbl_p ON tbl_s.km=tbl_p.km
WHERE tbl_p.km='1234567890'

aftabeshargh
دوشنبه 29 اسفند 1390, 11:11 صبح
با دستور sql میخوام بگم (برو از جدول tbl_p عکسی رو از ستون pic بگیر از ردیفی که کدملی km مشترک با km در tbl_s (که در برنامه کد ملی در txtkm.text نوشته میشه)
در واقع میخوام با دستور sql " ستون های جدولم در دیتاست رو پر کنم و بفرستم تو کریستال (که نمیشه)



[VB] Dim ds As New dskelas
Dim cn As New SqlConnection

Dim cmd As New SqlCommand
Dim adpp As New SqlDataAdapter
cn.ConnectionString = "Data Source=PC1;Initial Catalog=dbjahedi;Integrated Security=True"

cmd.Connection = cn
cmd.CommandType = CommandType.Text
cn.Open()
ds.Clear()


cmd.CommandText = ("SELECT tbl_s.km , tbl_s.address , tbl_s.family , tbl_s.namee,tbl_p.pic FROM tbl_s INER JOIN tbl_p ON tbl_s.km=tbl_p.km WHERE tbl_p.km='487000173122'")


adpp.SelectCommand = cmd

adpp.Fill(ds, "DataTable1")

Dim rp As New rpsabt
rp.SetDataSource(ds)
fpfsa.CrystalReportViewer1.ReportSource = rp
cn.Close()
fpfsa.ShowDialog()[/VB


با دستور sql جناب Farid خطای زیر رو میده

Hybrid
دوشنبه 29 اسفند 1390, 11:18 صبح
سلام ، بین جداول از طریق فیلد id ارتباط برقرار کن سپس میتونی از کد زیر استفاده کنی :



SELECT tbl_s.name, tbl_s.family, tbl_s.address, tbl_s.km, tbl_p.pic
FROM tbl_s INNER JOIN
tbl_p ON tbl_s.id = tbl_p.id
WHERE (tbl_s.id = 1)

aftabeshargh
دوشنبه 29 اسفند 1390, 11:22 صبح
این آخر کاری چطور باید بین جدول ها با id ارتباط برقرار کنم :گریه: چرا باید id باشه ؟ خوب با km (کد ملی چرا نشه)

Hybrid
دوشنبه 29 اسفند 1390, 11:34 صبح
خوب با کد ملی هم میشه ،


SELECT tbl_s.km, tbl_s.name, tbl_s.family, tbl_s.address, tbl_p.pic
FROM tbl_s INNER JOIN
tbl_p ON tbl_s.km = tbl_p.km
WHERE (tbl_s.km = 1)

aftabeshargh
دوشنبه 29 اسفند 1390, 11:38 صبح
اگه به 3 تا پست قبلتر نگاه کنید متوجه میشد از همین دستور sql استفاده کردم و اون خطا (تصویر) رو میده

aftabeshargh
دوشنبه 29 اسفند 1390, 12:27 عصر
دوستان نظری ندارن؟

ROSTAM2
دوشنبه 29 اسفند 1390, 17:57 عصر
با سلام
دوست عزیز اگر می خوای توسط مقدار ورودی که از جعبه متن می گیری (کد ملی) در جدول جستجو کنی (Filter) بجای شماره کد ملی بعد از مساوی این کد رو ینویس
@KM ابتدا @ و بعد KM که هنگام نوشتن دستور به تابع شما یک ورودی ارائه می ده که می تونین نام و خصوصیت متنی شیء TextBox رو در اون بنویسید
TextBox1.Text