View Full Version : دستور join
mehdi_taha
پنج شنبه 21 آبان 1388, 11:25 صبح
با سلا خدمت اساتيد . من دو table براي شهرها و استانها دارم و درون table مشخصات پرسنلي كد شهرها و استانها را براي محل تولد و محل صدور ذخيره كرده ام . سوال من اينست كه چطوري از دستور join استفاده كنم كه نام شهرها و استانهاي آنها را بياورد.
Select * from tblPersonInfo
Join tblCity ON tblPersonInfo.BirthCityID=tblCity.CityID
با اين دستور فقط نام شهر تولد را مي آورد چطوري join رو بنويسم كه نام شهر محل صدور را هم داشته باشم. متشكرم
محمد سلیم آبادی
پنج شنبه 21 آبان 1388, 11:57 صبح
سلام،
با این فرض که ستون مربوط به شهر محل صدور برابر با SodorCityID است از Query زیر استفاده کنید.
Select t.*,
c.CityName as [شهر تولد],
cc.CityName as [شهر محل صدور]
from tblPersonInfo as t
inner Join tblCity as c
on t.BirthCityID = c.CityID
inner join tblCity as cc
on t.SodorCityID = cc.CityID
mona11
پنج شنبه 21 آبان 1388, 12:03 عصر
خوب معلومه چرا جواب اشتباه میگیرین.شما باید جلوی on اسم 2 تا جدول که توی هر 2 تاشون یه فیلد مشترک هست رو بنویسید در صورتی که شما هم bearthcityid رو نوشتید هم city id .مثلا اینطوری:
select * from tblPersonInfo join tnlCity on tblcity.id1= tblPersonInfo.id1
توجه کنید که id1 در هر 2 جدول یکسان است
maryamrad
پنج شنبه 21 آبان 1388, 12:10 عصر
در بانك اطلاعاتي رابطه اي شما نمي توانيد بين دو بانك دو join برقرار كنيد.به اين دليل:
it may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
كه خطاي ODBC است.
نتيجتا براي اينكار شما بايد دو جدول شهر در نظر بگيريد يكي براي محل صدور يكي براي محل تولد.
با يك جدول استان كه هر دوي اين جدول ها به آن كانكت شوند
اگر اشتباه نكنم اين نوع كانكشن در سطح بانك Access و SQL امكان پذير نيست. البته با يك كامپوننت در Access قابل دسترسي خواهد بود كه به نظرم در اينجا استفاده كردن از همان دو جدول به صرفه تر است
موفق باشيد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.