PDA

View Full Version : سوال: یک سوال در مورد پیاده سازی Join



mpmsoft
پنج شنبه 02 مهر 1388, 13:42 عصر
دوستان من در طراحی بانک نرم افزار دبیرخانه به مشکل خوردم

من یک تیبل دارم که کلیه اشخاص و مراکز طرف مکاتبات در اون ذخیره می شه به نام Tbl_C_MA
و یک جدول دارم که دفتر اندیکاتور من هست و در اون کلیه عملیات مکاتبه ذخیره می شه

در جدول اندیکاتور 2 فیلد دارم به عنوان فرستنده و گیرنده
در این دو فیلد ID رکورد انتخاب شده از جدول Tbl_C_MA درج می شه

می خوام در زمان نمایش Join جدول اندیکاتور رو از جدول Tbl_C_MA بدم که بجای نمایش کد عنوان نمایش داده بشه

تا نمایش مشکلی ندارم
حالا می خوام بگم که بر اساس فرستده جستجو بکنه (عنوان نه کد) در این قسمت مشکل دارم که به چه شکل بنویسم

ممنون می شم کمکم کنید




SELECT TblLetter_1.ID AS انديکاتور, TblLetter_1.نوع, TblLetter_1.اهميت, TblLetter_1.اولويت, TblLetter_1.[تاريخ مبدا], TblLetter_1.[شماره مبدا],
Tbl_C_MA_1.عنوان AS [مرکز فرستنده],
(SELECT Tbl_C_MA.عنوان
FROM TblLetter INNER JOIN
Tbl_C_MA ON TblLetter.[مرکز گيرنده] = Tbl_C_MA.کد) AS [مرکز گيرنده],
(SELECT Tbl_C_MA_2.عنوان
FROM Tbl_C_MA AS Tbl_C_MA_2 RIGHT OUTER JOIN
TblLetter AS TblLetter_2 ON Tbl_C_MA_2.کد = TblLetter_2.[امضاء کننده]) AS [امضاء کننده]
FROM TblLetter AS TblLetter_1 LEFT OUTER JOIN
Tbl_C_MA AS Tbl_C_MA_1 ON TblLetter_1.[مرکز فرستنده] = Tbl_C_MA_1.کد
WHERE (Tbl_C_MA_1.عنوان = 'علی')

DlphIran
پنج شنبه 02 مهر 1388, 14:06 عصر
خوب كاملا عادي جستجو كنيد .

فقط وقتي select مي كنيد،‌عنوان فيلد مورد نظر براي جستجو هم بهمراه كد بايد باشه،‌

بعد از join كردن جدول تو يه خط جداگانه با Where‌ جستجو كنيد. همين

mpmsoft
شنبه 04 مهر 1388, 10:19 صبح
دوست عزیز اینطوری هم که شما می گید نیست

1- زمانی که فیلد توسط Join به یک تیبل دیگه وصل می شه DataType عددی هست و زمانی جستجو بصورت عنوان می خواهید سرچ کنید



where TblLetter_1.[مرکز فرستنده]= 'علی'

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'علي' to data type int.


2 - فیلد عنوان در جدول اصلی به سه فیلد دیگر Relation شده پس نمی شه بر اساس فیلد عنوان تیبل اول هم جستجو کرد
3 - وقتی فیلدها رو با مقدار alias نشون می دم خطا می ده که فیلد مورد نظر را یافت نشد
مثلا فیلد ID رو بنام اندیکاتور انتخاب می کنم ولی در Where نمی تونم بگم براساس فیلد اندیکاتور جستجو کن حتما باید ID رو وارد کنم

محمد سلیم آبادی
شنبه 04 مهر 1388, 10:34 صبح
مشکل دقیقا اینجاست که وقتی فیلدها رو با مقدار alias نشون می دم خطا می ده که فیلد مورد نظر را یافت نشد
مثلا فیلد ID رو بنام اندیکاتور انتخاب می کنم ولی در Where نمی تونم بگم براساس فیلد اندیکاتور جستجو کن حتما باید ID رو وارد کنم

نام های مستعار در ماده ی WHERE قابل شناسایی نیستند شما باید نتیجه را داخل یک Derived table داشته باشید سپس از WHERE استفاده کنید.

mpmsoft
شنبه 04 مهر 1388, 10:39 صبح
نام های مستعار در ماده ی WHERE قابل شناسایی نیستند شما باید نتیجه را داخل یک Derived table داشته باشید سپس از WHERE استفاده کنید.

می شه یک نمونه کد مثال بزنید