PDA

View Full Version : تجمیع چند فیلد در یک ستون



mortezahbh
یک شنبه 30 آذر 1393, 11:15 صبح
با سلام خدمت تمامی دوستان عزیز :قلب:

بنده یک کوئری نوشتم که خروجی زیر رو داره :

126753

ولی درواقع من اینو نمیخوام، من میخوام هر دانشجو یک سطر داشته باشه و در قسمت آخر یعنی "بدهی" عنوان بدهی هر سطر نوشته بشه، Group by هم انجام دادم ولی چون مقادیر بدهی با هم متفاوت هستند همین خروجی رو دارم.

یعنی بصورت زیر :

126755


ممنون میشم راهنمایی کنید

باتشکر:لبخندساده:

یوسف زالی
یک شنبه 30 آذر 1393, 16:14 عصر
سلام.
دنبال for xml بگردید. مثالهاش در همین سایت موجوده.

mortezahbh
یک شنبه 30 آذر 1393, 21:00 عصر
سلام.
دنبال for xml بگردید. مثالهاش در همین سایت موجوده.

خیلی ممنون از راهنماییتون

اما من هرچقدر این کد رو بالا پایین کردم به نتیجه نرسیدم

میشه راهنمایی کنید که کجای کوئری باید ازش استفاده کنم؟؟؟


SELECT students.FName,students.LName,students.father,stud ents.stunum,students.mobile,
students.National_Num,students.FieldofStudy,studen ts.years,students.Semester,students.Status,
Debts.title
FROM students LEFT JOIN Debts on students.ID = Debts.student_id
where Debts.status ='پرداخت نشده' and Debts.title = 'شهریه ثابت' or Debts.title = '15% حق نظارت' or Debts.title = 'بیمه' or Debts.title = 'سرانه فرهنگی'
group by students.FName,students.LName,students.father,stud ents.stunum,students.mobile,students.National_Num, students.FieldofStudy,students.years,students.Seme ster,students.Status,Debts.title

من خودم به این صورت تغییر دادم


SELECT students.FName,students.LName,students.father,stud ents.stunum,students.mobile,
students.National_Num,students.FieldofStudy,studen ts.years,students.Semester,students.Status,
STUFF((SELECT "," + Debts.title from Debts for xml PATH("")) ,1,1,"") AS result
FROM students LEFT JOIN Debts on students.ID = Debts.student_id
where Debts.status ='پرداخت نشده' and Debts.title = 'شهریه ثابت' or Debts.title = '15% حق نظارت' or Debts.title = 'بیمه' or Debts.title = 'سرانه فرهنگی'
group by students.FName,students.LName,students.father,stud ents.stunum,students.mobile,students.National_Num, students.FieldofStudy,students.years,students.Seme ster,students.Status,Debts.title


ولی درست نبود، میشه یکم راهنمایی کنید؟

فیلدی که باید توی یک ستون اضافه بشه اینه ===> Debts.title

ممنون :قلب:

مرتضی تقدمی
دوشنبه 01 دی 1393, 07:40 صبح
سلام
اينو تست كنيد. چون امكانات نبود نشد تست كنم.


SELECT students.FName,students.LName,students.father,stud ents.stunum,students.mobile,
students.National_Num,students.FieldofStudy,studen ts.years,students.Semester,students.Status,
STUFF((SELECT ', ' + Debts.title from Debts where Debts.ID = DD.ID for xml PATH('')) ,1,2,'') AS result
FROM students LEFT JOIN Debts DD on students.ID = Debts.student_id
where Debts.status ='پرداخت نشده' and Debts.title = 'شهریه ثابت' or Debts.title = '15% حق نظارت' or Debts.title = 'بیمه' or Debts.title = 'سرانه فرهنگی'
group by students.FName,students.LName,students.father,stud ents.stunum,students.mobile,students.National_Num, students.FieldofStudy,students.years,students.Seme ster,students.Status



فيلد title رو توي group by نيار و توي select داخلي هم ببين چكار كردم.
موفق باشيد

mortezahbh
دوشنبه 01 دی 1393, 10:05 صبح
فيلد title رو توي group by نيار و توي select داخلي هم ببين چكار كردم.
موفق باشيد


ممنون اما باز هم جواب نداد و اخطار زیر رو میده



---------------------------
Syntax error. in query expression 'STUFF((SELECT "," + Debts.title from Debts where Debts.ID = students.ID for xml PATH("")) ,1,2,"")'
---------------------------




درضمن دیتا بیس من اکسسه آیا این کد جواب میده روش ؟؟؟؟

با تشکر

مرتضی تقدمی
دوشنبه 01 دی 1393, 10:34 صبح
درضمن دیتا بیس من اکسسه آیا این کد جواب میده روش ؟؟؟؟


به تالار اكسس مراجعه كنيد.

mortezahbh
دوشنبه 01 دی 1393, 21:58 عصر
به تالار اكسس مراجعه كنيد.

خب من دارم یا دستور SQL از بانکم اطلاعات میگیرم
فقط باید یک دستور باشه که با دیتابیس اکسس سازگاری داشته باشه

غیر از اینه؟؟؟

مرتضی تقدمی
دوشنبه 01 دی 1393, 23:28 عصر
خب من دارم یا دستور SQL از بانکم اطلاعات میگیرم
فقط باید یک دستور باشه که با دیتابیس اکسس سازگاری داشته باشه

غیر از اینه؟؟؟

بعضی دستورات بانک اکسس با اس کیو ال تفاوت دارن.
داره پیام سینتکس میده. توی کوئری شما بجای دابل کوتیشن " باید از تک کوتیشن ' استفاده کنی. تست کنید.

mortezahbh
سه شنبه 02 دی 1393, 09:42 صبح
بعضی دستورات بانک اکسس با اس کیو ال تفاوت دارن.
داره پیام سینتکس میده. توی کوئری شما بجای دابل کوتیشن " باید از تک کوتیشن ' استفاده کنی. تست کنید.

من برنامه رو با دلفی دارم می نویسم و اگه از تک کوتیشن استفاده کنم بعنوان پایان رشته درنظر میگیره

توی دستورات دیگمم از دابل کوتیشن استفاده کردم مشکلی نداشته

احتمالا مورد اولی که فرمودید اینجا صدق میکنه که شاید دستور STUFF و یا for xml PATH برای access تعریف نشده اند

یوسف زالی
سه شنبه 02 دی 1393, 16:58 عصر
نخیر در اس کیو ال اکسس تعریف نشدند.

mortezahbh
سه شنبه 16 دی 1393, 19:05 عصر
دوستان عزیز من در تالار اکسس این موضوع رو مطرح کردم تا آخر به نتیجه رسیدم ولی داخل خود اکسس نتیجه رو درست نشون میداد ولی از داخل دلفی نمیشد به تابعی که داخل اکسس تعریف شده بود دسترسی داشت

حالا میخوام ببینم در sql دستور دیگری برای اینکار وجود نداره که روی دیتابیس اکسس هم جواب بده؟؟؟؟


خیلی ممنون