View Full Version : دریافت خروجی با توجه به تصویر پیوستی
رامین مرادی
شنبه 19 بهمن 1398, 11:24 صبح
سلام دوستان وقت بخیر.
من یه جدول دارم به اسم ایلاغ ها با فیلدهای (شماره ابلاغ-شماره پرونده-تاریخ ابلاغ) که شماره ابلاغ به عنوان کلید اصلی این جدول هست و تکراری ثبت نمیشه
یه جدول دیگه هم دارم به اسم بازرسی با فیلد های (شماره بازرسی-شماره پرونده- شماره ابلاغ-تاریخ بازرسی) که شماره بازرسی به عنوان فیلد اصلی هست.
تو جدول بازرسی کاربر میتونه شماره ابلاغ رو ثبت کنه یا نکنه که اختیاریه و کلا ممکنه بعضی از بازرسی ها شماره ابلاغ نداشته باشن.
حالا من میخوام یه خروجی از این دوتا جدول بگیرم که شامل (شماره ابلاغ- شماره پرونده- شماره بازرسی- تاریخ ابلاغ) باشه که کل ابلاغ ها حتما نمایش داده بشه ولی اگه رکوردی با اون شماره ابلاغ هم تو جدول بازرسی نبود شماره بازرسی خالی بیاد.
شبیه تصویر زیر:
151343
ممنون میشم راهنماییم کنید.
Mahmoud.Afrad
شنبه 19 بهمن 1398, 22:05 عصر
جدول ابلاغ را با جدول بازرسی left join کنید. (اگر ترتیب جداول را عوض کنید بایست از right join استفاده کنید.)
https://www.sqlservertutorial.net/sql-server-basics/sql-server-left-join
رامین مرادی
یک شنبه 20 بهمن 1398, 08:36 صبح
جدول ابلاغ را با جدول بازرسی left join کنید. (اگر ترتیب جداول را عوض کنید بایست از right join استفاده کنید.)
https://www.sqlservertutorial.net/sql-server-basics/sql-server-left-join
مشکل اینکه اون شماره ابلاغ تو جدول بازرسی کلید خارجی نیست. یه فیلد اختیاریه و با توجه به اینکه کاربر میتونه موارد غیر شماره ابلاغ هم تو اون ثبت کنه مثلا یه عدد خاص وقتی جوین میشه خطا میده
متن خطا هم به این صورته:
Conversion failed when converting the nvarchar value '788 و 744' to data type int
که کاربر یه عددی وارد کرده که خب قابل تبدیل نیست.برا همین فک نکنم جوین ها جواب بده.
Mahmoud.Afrad
دوشنبه 21 بهمن 1398, 12:16 عصر
در جدول بازرسی اگر شماره ابلاغ فقط کاراکترهای عددی می پذیره نوعش رو تغییر بدید اگر نه که هیچ.
در join هر دو شماره ابلاغ باید نوعشون یکسان باشه تا بشه مقایسه کرد. میتونید convert کنید.
رامین مرادی
دوشنبه 21 بهمن 1398, 12:35 عصر
در جدول بازرسی اگر شماره ابلاغ فقط کاراکترهای عددی می پذیره نوعش رو تغییر بدید اگر نه که هیچ.
در join هر دو شماره ابلاغ باید نوعشون یکسان باشه تا بشه مقایسه کنید. میتونید convert کنید.
خب تو جدول بازرسی امکان تبدیل نوعش وجود نداره و چون فیلد اختیاری به صورت رشته هست و کاربر میتونه خالی یا ترکیبی از دو ابلاغ رو بنویسه.
غیر از جوین ها راه حل دیگه ای نیست ؟ با این حساب باید برم سمت برنامه و تفکیک کنم
Mahmoud.Afrad
چهارشنبه 23 بهمن 1398, 19:03 عصر
خب تو جدول بازرسی امکان تبدیل نوعش وجود نداره و چون فیلد اختیاری به صورت رشته هست و کاربر میتونه خالی یا ترکیبی از دو ابلاغ رو بنویسه.
غیر از جوین ها راه حل دیگه ای نیست ؟ با این حساب باید برم سمت برنامه و تفکیک کنم
ترکیبی از دو ابلاغ یعنی دو شماره در یک فیلد؟
رامین مرادی
پنج شنبه 24 بهمن 1398, 08:17 صبح
ترکیبی از دو ابلاغ یعنی دو شماره در یک فیلد؟
بله این مورد هم امکان داره. کلا اون فیلد ابلاغ چیزی شبیه به فیلد توضیحات هست که کاربر میتونه بجای شماره ابلاغ یه متن کوچیک یا هرچیزی وارد کنه.
کلا نمیشه کاری کرد که قبل جوین نوع فیلد رو تبدیل کرد به مثلا عدد و تو رکورد هایی که رشته هست یا خالی هست خطا نگیره و ردشون کنه؟
Mahmoud.Afrad
جمعه 25 بهمن 1398, 19:25 عصر
بله این مورد هم امکان داره. کلا اون فیلد ابلاغ چیزی شبیه به فیلد توضیحات هست که کاربر میتونه بجای شماره ابلاغ یه متن کوچیک یا هرچیزی وارد کنه.
کلا نمیشه کاری کرد که قبل جوین نوع فیلد رو تبدیل کرد به مثلا عدد و تو رکورد هایی که رشته هست یا خالی هست خطا نگیره و ردشون کنه؟
برعکس کار کن، یعنی فیلد عدد رو به رشته تبدیل و مقایسه کن. ولی خب باید تمام حالات ممکن رو در نظر بگیری.
H.Jafari
یک شنبه 27 بهمن 1398, 14:36 عصر
cast numeric اون فيلد رو بگيريد ولي بايد مطمئن باشيد به غير از عدد در اون فيلد چيزي درج نشده باشه و گرنه خطا دريافت ميكني
رامین مرادی
یک شنبه 27 بهمن 1398, 14:37 عصر
cast numeric اون فيلد رو بگيريد ولي بايد مطمئن باشيد به غير از عدد در اون فيلد چيزي درج نشده باشه و گرنه خطا دريافت ميكني
مشکل همینه دیگه.ممکنه چیزی غیر عدد درج بشه یا شبیه این (1235-5623)درج بشه عددها:افسرده:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.