View Full Version : مبتدی: مشکل در دستور ساده Sql
  
aftabeshargh
دوشنبه 29 اسفند 1390, 10: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, 10: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, 11: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, 11:14 صبح
سلام ، بین جداولت ارتباط برقرار کردی؟ 
در ضمن به دستور من دقت کن دستورت رو کاملا اشتباه نوشتی.
aftabeshargh
دوشنبه 29 اسفند 1390, 11: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, 11: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, 12: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, 12: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, 12:22 عصر
این آخر کاری چطور باید بین جدول ها با id ارتباط برقرار کنم :گریه: چرا باید id باشه ؟ خوب با km (کد ملی چرا نشه)
Hybrid
دوشنبه 29 اسفند 1390, 12: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, 12:38 عصر
اگه به 3 تا پست قبلتر نگاه کنید متوجه میشد از همین دستور sql  استفاده کردم و اون خطا (تصویر) رو میده
aftabeshargh
دوشنبه 29 اسفند 1390, 13:27 عصر
دوستان نظری ندارن؟
ROSTAM2
دوشنبه 29 اسفند 1390, 18:57 عصر
با سلام 
دوست عزیز اگر می خوای توسط مقدار ورودی که از جعبه متن می گیری (کد ملی) در جدول جستجو کنی (Filter) بجای شماره کد ملی بعد از مساوی این کد رو ینویس
@KM ابتدا @ و بعد KM که هنگام نوشتن دستور به تابع شما یک ورودی ارائه می ده که می تونین نام و خصوصیت متنی شیء TextBox رو در اون بنویسید
TextBox1.Text
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.