PDA

View Full Version : یک کوئری خاص



Site Admin
چهارشنبه 09 شهریور 1390, 07:13 صبح
نمایش خروجی زیر توسط کوئری یا آبجکت خاص
با سلام من سه جدول با مشخصات زیر دارم
1- جدول دانشجو شامل فیلدهای نام و نام خانوادگی شماره دانشجویی
2- جدول درس شامل کد درس و نام درس
3-جدول انتخاب واحد شامل شماره دانشجو و کد درس
این سه جدول با هم در ارتباط هستند
برنامه نویسی انجام شده و انتخاب واحد را انجام میدهد
مشکل اینجاست که من خروجی زیر را با استفاده از کوئری میخواهم
شماره دانشجو ، نام ، نام خانوادگی ،دروس انتخاب شده
888 ،علی ، رضایی : 1 ریاضی 2 شیمی 3 زبان
898 ،علی ، کریمی : 1 ریاضی 7 دارو 6 ادبیات
در یک رکورد مشخصات دانشجو و در یک فیلد مشخصات دروس ثبت شده پشت سر هم

حجم دیتا زیاد و سرعت کار واسم خیلی مهمه

mehran_sh_t
پنج شنبه 10 شهریور 1390, 09:30 صبح
سلام
از دو تا join استفاده کنید،join اول بین جداول دانشجو و انتخاب واحد، و join دوم بین انتخاب واحد و درس. فیلد های مورد نظر رو هم همون اول در select بیارید

Galawij
چهارشنبه 23 شهریور 1390, 16:32 عصر
دراین تاپیک، (http://barnamenevis.org/showthread.php?298092-ترکیب-دو-جدول)پست شماره 4، کدها را بررسی کنید و متناسب با نیازتون آنها را تغییر بدید.

Reza_Yarahmadi
چهارشنبه 23 شهریور 1390, 19:26 عصر
کد زیر رو امتحان کنید
With STU as(
Select SID = 888, SName = N'علی', SFamily = N'رضایی'
UNION ALL
Select SID = 889, SName = N'علی', SFamily = N'رضایی'
), Point as(
Select PID = 1, PName = N'ریاضی'
UNION ALL
Select PID = 2, PName = N'شیمی'
UNION ALL
Select PID = 3, PName = N'زبان'
UNION ALL
Select PID = 4, PName = N'فیزیک'
UNION ALL
Select PID = 5, PName = N'عربی'
UNION ALL
Select PID = 6, PName = N'دارو'
UNION ALL
Select PID = 7, PName = N'ادبیات'
),Relation as(
Select SID = 888, PID = 1
UNION ALL
Select SID = 888, PID = 2
UNION ALL
Select SID = 888, PID = 3
UNION ALL
Select SID = 889, PID = 1
UNION ALL
Select SID = 889, PID = 6
UNION ALL
Select SID = 889, PID = 7
)
Select
Cast(S.SID as varchar) + ',' + S.SName + ',' + S.SFamily,
(Select
Cast(P.PID as varchar) + ' ' + PName + ' '
From
Point P INNER JOIN Relation R
ON
P.PID = R.PID
Where
SID = S.SID
For XML PAth(''))
From
STU S