PDA

View Full Version : سوال: سوال در مورد Join از حرفه ای ها



baidin
سه شنبه 26 خرداد 1388, 01:50 صبح
با سلام
فرض کنید 2 تا جدول داریم که در یکی کلید اصلی و در جدول دوم کلید خارجی موجود میباشد
حال اگر ما از
Join
استفاده کنیم به صورتی که اطلاعات جدول اول و دوم را همزمان بخواهیم آنگاه به تعداد تکرار کلیدهای خارجی داده های جدول اول در نتیجه به دست آمده تکرار خواهند شد.
حالا من میخوام در
Join
کردن اطلاعات جدول اول تکرار نشوند و اطلاعات جدول دوم را در یک فیلد جمع آوری کنم مانند شکل زیر
دقت شود که میخواهم با دستورات
Sql
این کار را انجام دهم
file:///F:/Documents%20and%20Settings/Dear-User/My%20Documents/My%20Pictures/untitled1.JPGhttp://upload.iranblog.com/6/1245136486.jpg

a.maleki
سه شنبه 26 خرداد 1388, 12:14 عصر
دوست عزیز این کاری که شما می خواهید البته اگر درست متوجه شده باشم با دستور PIVOT انجام میشه

baidin
سه شنبه 26 خرداد 1388, 16:01 عصر
با تشکر
مورد ذکر شده را بررسی کردم اما به نتیجه نرسیدم
فکر میکنم با یک تابع مشکل حل بشود.فرض کنید جدولی برای کارمندان و جدولی هم برای مدارک تحصیلی داریم که ستون های این جدول عبارتند از:
شماره کارمند - مقطع - رشته تحصیلی
حال مشخص است که هر کارمندی میتواند بیش از یک مدرک تحصیلی داشته باشد
حال میخواهم بتوانم درخواست کنم

select ID,...,FunTahsilat(ID)
from KarmandTable

که وظیفه تابع ذکر شده این باشه که کد عضویت را بگیره و در EducationTable جستجو کنه و خروجی آن یک رشته شامل مقطع و رشته تحصیلی فرد مورد نظر باشه به عنوان مثال اگر کد 1000 دارای دو رشته باشه آنگاه در جدول تحصیلات داریم:

مقطع رشته کد کارمند
-----------------------------------------
1000 کاردانی حسابداری
کارشناسی کامپیوتر 1000

حال میخواهم خروجی تابع به صورت زیر باشه
"کاردانی حسابداری- کارشناسی کامپیوتر"

AminSobati
سه شنبه 26 خرداد 1388, 21:51 عصر
http://www.barnamenevis.org/forum/showthread.php?t=66619

baidin
پنج شنبه 28 خرداد 1388, 20:54 عصر
با تشکر
من روی لینکی که فرستادید کار کردم و در انتخاب همه رکوردهای جدوال به نتیجه رسیدم منتها زمانی که در قسمت where میخواهیم خروجی تابع را فیلتر کنیم خطا میده که


<OK>

selet Fun_Personal_Birthday(code)
from personal


<Error>'Fun_Personal_Birthday' is not a recognized built-in function name
selet Fun_Personal_Birthday(code)
from personal
where Fun_Personal_Birthday(code)="aa

baidin
شنبه 30 خرداد 1388, 23:06 عصر
با تشکر
من روی لینکی که فرستادید کار کردم و در انتخاب همه رکوردهای جدوال به نتیجه رسیدم منتها زمانی که در قسمت where میخواهیم خروجی تابع را فیلتر کنیم خطا میده که


<OK>

selet Fun_Personal_Birthday(code)
from personal


<Error>'Fun_Personal_Birthday' is not a recognized built-in function name
selet Fun_Personal_Birthday(code)
from personal
where Fun_Personal_Birthday(code)="aa



کسی اینجا نیست!
خودم به جواب رسیدم دوستانی که این مشکل را داشتند کافیه قبل از نام تابع dbo قرار بدین!


where dbo.Fun_Personal_Birthday(code)="aa