PDA

View Full Version : برقراری ارتباط میان جداول در sql و اجرای تقاضا



alonemm
دوشنبه 25 مرداد 1389, 09:19 صبح
باسلام:
فرض کنید من یک جدول دارم که نام خودرو رو در آن می نویسیم.
مثال:
name
id
حالا یک جدول داریم که اطلاعات یک ترمینال درش ذخیره میشه.
و فیلد namekhodro رو میخایم از جدول خودرو بخونه.
به صورتی که اگه 1 بود بره id که در جدول خودرو 1 نامشو واسمون بیاره.
1- چگونه این ارتباط را برقرار کنم.
2- آیا پس از برقراری ارتباط با اجرای کوئری این کار انجام میشه؟
با تشکر.

m2148059
دوشنبه 25 مرداد 1389, 11:19 صبح
با C#‎ من با کد زیر موافقم حالا شاید شما خودتون اینو بلد باشین و می خواستین راه query را یاد بگیرید:

int mashinid = 0;
string mashinname;
SqlConnection s1 = newSqlConnection();
SqlDataAdapter d1 = newSqlDataAdapter("select mashinname from mashintable where id='"+mashinid+"'":,s1);
DataTable d2=newDataTable();
d1.Fill(d2);
mashinname=Convert.ToString(d2.Rows[0][0]);
SqlDataAdapter d3=newSqlDataAdapter("insert into terminaltable (mashinid,mashinname)values('"+mashinid+"','"+mashinname+"')",s1);
d3.SelectCommand.ExecuteNonQuery();

rana-writes
دوشنبه 25 مرداد 1389, 14:10 عصر
سلام
میشه جدول و فیلدهایی که مد نظرتونه کامل بذارین تا بشه راهنماییتون کرد؟
دوم هم اینکه سوالتون رو یه کم واضح تر مطرح می کنین؟
اینها یعنی چی؟



به صورتی که اگه 1 بود بره id که در جدول خودرو 1 نامشو واسمون بیاره.

چی باید یک باشه؟



2- آیا پس از برقراری ارتباط با اجرای کوئری این کار انجام میشه؟

alonemm
دوشنبه 25 مرداد 1389, 14:14 عصر
مثل اگه فیلد نام خودرو مساوی با 5 باشه بره و از جدول نام خودرو خودرویی که فیلدش برابر 5 اسم خودرو رو واسم بیاره.

m_omrani
چهارشنبه 27 مرداد 1389, 16:41 عصر
واقعيتش من هرچي دارم صوتر مساله و کُد C# اي که در پست دوم معرفي شده رو مي خونم چيزي سر در نميارم. چون بر اساس چيزي که از کُد C# ديده مي شه به نظر بنده مشکل طراحي داره و نرمال سازي نشده.

به نظر من مشخصات خودرو شامل کُد، نام، مدل و ... بايد در يک جدول باشه و بعد کليد اين جدول به صورت کليد خارجي در جدول ترمينال استفاده بشه. اگه مقصودتون اينه که چطور مي شه يک ماشين رو در جدول ترمينال اضافه کرد خوب چيز سختي نيست. ابتدا خودرو رو جستجو مي کنيد و وقتي پيداش کرديد کليدش رو توي جدول ترمينال درج مي کنيد.

توضيحات تون گويا نيست.

raha2400
چهارشنبه 27 مرداد 1389, 18:28 عصر
خوب اگه من منظورتون رو درست متوجه شده باشم منظورتون join کردن table ها بوده خوب اگه نام table اول رو khodro و نام table دوم رو terminal بذارید و مثلا table اول دارای فیلدهای id , name و table دوم (terminal) شامل فیلدهای id و terminlnumber باشه که id در واقع کلید خارجی است که به id مربوط به table اول اشاره میکنه . میتنونید برای خوندن نام خودرو نام ترمینال رو مشخص کنید و نام ماشین های توی اون terminal رو بخونید.


select name from khodero , terminal where terminal.id=khodro.id and terminalnumber=1;

برای اجرا هم execute کنید نشون میده.

alonemm
پنج شنبه 28 مرداد 1389, 09:25 صبح
خوب اگه من منظورتون رو درست متوجه شده باشم منظورتون join کردن table ها بوده خوب اگه نام table اول رو khodro و نام table دوم رو terminal بذارید و مثلا table اول دارای فیلدهای id , name و table دوم (terminal) شامل فیلدهای id و terminlnumber باشه که id در واقع کلید خارجی است که به id مربوط به table اول اشاره میکنه . میتنونید برای خوندن نام خودرو نام ترمینال رو مشخص کنید و نام ماشین های توی اون terminal رو بخونید.


select name from khodero , terminal where terminal.id=khodro.id and terminalnumber=1;


برای اجرا هم execute کنید نشون میده.




من همین روش رو می خام مثل اگه در جدول ترمینال فیلد نام خودرو 5 بود بره از جدول خودرو ها نام خودرویی رو بیاره که id اون 5 باشه.

دوست عزیز اگه مثال دارید واسم برای دانلود بزارید.
متشکرم.

zssmoa
شنبه 30 مرداد 1389, 12:19 عصر
با سلام
فکر کنم منظورتون این باشه
select namkhodro
from khodto inner join terminal on khodro.id=terminal.mashinname
موفق باشید

لطفا یکی هم به موضوع کتابخانه جواب بده