PDA

View Full Version : درخواست کوئری مناسب



korosh00
سه شنبه 14 شهریور 1402, 22:57 عصر
سلام ما در یک جدول مشخصات داریم با کدمشخص و دریک جدول اجناس . یک جدول ساختیم که کد فرد و خرید هاش رو وارد میکنه . حالا یک کوئری میخوام که تعداد خریدهای افراد رو محاسبه بکنه و بگه کدوم نفر بیشترین خرید رو داشته .ممنون

mazoolagh
چهارشنبه 15 شهریور 1402, 14:11 عصر
سلام و روز خوش
توی سیستم بگردین - یک دیتابیس نمونه northwind.accdb پیدا میکنین.

کافی هست همین دیتابیس رو با دقت بررسی کنین.

simorgh2000
پنج شنبه 16 شهریور 1402, 00:07 صبح
سلام

امیدوارم این نمونه فایل بدردتون بخوره

korosh00
جمعه 17 شهریور 1402, 19:22 عصر
بسیار ممنون و تشکر فراوان .
لطفا فراوان نمودید .

fh6114345@gmail.com
شنبه 18 شهریور 1402, 09:17 صبح
سلام ما در یک جدول مشخصات داریم با کدمشخص و دریک جدول اجناس . یک جدول ساختیم که کد فرد و خرید هاش رو وارد میکنه . حالا یک کوئری میخوام که تعداد خریدهای افراد رو محاسبه بکنه و بگه کدوم نفر بیشترین خرید رو داشته .ممنون

برای محاسبه تعداد خریدهای هر فرد و پیدا کردن نفری که بیشترین خرید را داشته است، می‌توانید از دستورات SQL و یک کوئری گروه‌بندی (GROUP BY) استفاده کنید. در ادامه، یک کوئری SQL برای انجام این کار آورده شده است:


SELECT
p.PersonCode, -- کد فرد
p.FirstName, -- نام فرد (اگر در جدول مشخصات وجود دارد)
p.LastName, -- نام خانوادگی فرد (اگر در جدول مشخصات وجود دارد)
COUNT(o.PurchaseID) AS TotalPurchases -- تعداد خریدها
FROM
Persons AS p -- جدول مشخصات افراد
LEFT JOIN
Orders AS o -- جدول خریدها
ON
p.PersonCode = o.PersonCode -- ارتباط بین جدول مشخصات و جدول خریدها
GROUP BY
p.PersonCode, p.FirstName, p.LastName -- گروه‌بندی بر اساس کد فرد و نام‌ها
ORDER BY
TotalPurchases DESC -- مرتب‌سازی نزولی بر اساس تعداد خریدها
LIMIT 1; -- بازه‌بندی نتایج تا یک ردیف (نفر بیشترین خرید را دارد)




توجه داشته باشید که در کوئری بالا، جدول مشخصات افراد به نام Persons و جدول خریدها به نام Orders فرض شده است. شما باید نام جداول و نام ستون‌ها را با نام‌های دقیق جداول و ستون‌های خود تطبیق دهید. این کوئری تعداد خریدها را برای هر فرد محاسبه می‌کند و نتایج را بر اساس تعداد خریدها به ترتیب نزولی مرتب می‌کند. با استفاده از LIMIT 1 می‌توانید نفری که بیشترین تعداد خرید را داشته است را دریافت کنید. اگر نام و نام خانوادگی هر فرد را هم داخل جدول مشخصات داشته باشید، می‌توانید این اطلاعات را نیز به نتیجه اضافه کنید.

korosh00
یک شنبه 19 شهریور 1402, 04:52 صبح
سلام من کلید بین دو جدول رو از نوع تکس گذاشتم چند بار تست کردم نشد امکانش هست dsum را با شرط اینکه فیلد از نوع تکس باشه بنویسید . در مثال از نوع int هست و خوب جواب داد ولی تکس کوثیشن گذاشتم نشد .

simorgh2000
یک شنبه 19 شهریور 1402, 16:06 عصر
سلام

نمونه فایل خدمت شما

korosh00
یک شنبه 19 شهریور 1402, 18:17 عصر
سلام
clng منظور چیست ؟

mazoolagh
یک شنبه 19 شهریور 1402, 18:26 عصر
LIMIT 1; -- بازه‌بندی نتایج تا یک ردیف (نفر بیشترین خرید را دارد)

با استفاده از LIMIT 1 می‌توانید نفری که بیشترین تعداد خرید را داشته است را دریافت کنید.

وقتی بدون دانستن اصول کار از هوش ساختگی کمک میگیرین نتیجه اش این میشه که پاسخ نادرست میدین!
اون limit برای mysql هست و نه در access و نه در mssql کار نمیکنه!

دست کم یک دور پاسخ هوش ساختگی رو بخونین،
و اگر دانش کافی برای بررسی کد ندارین ، اون رو اجرا کنین تا درست بودنش و ایرادهاش مشخص بشه .

simorgh2000
یک شنبه 19 شهریور 1402, 18:34 عصر
یعنی covert to long
بخاطر سورت استفاده کردم تا خروجی total به عدد تبدیل بشه و درست سورت کنه

korosh00
یک شنبه 19 شهریور 1402, 18:52 عصر
154920

سلام لطفا این مثال رو ببینید ایراد از چیست ؟

simorgh2000
یک شنبه 19 شهریور 1402, 20:13 عصر
در کوئری فقط جدول t1 بیارد (جدول مادر)

کد هم تو نمونه نگاه کنید

korosh00
دوشنبه 20 شهریور 1402, 05:57 صبح
بسیار نکته خوبی بود . ممنون

korosh00
شنبه 01 مهر 1402, 03:36 صبح
سلام
این کد رو برای بالای 100 خرید میخواد انجام بده sort نمیکنه . فقط روی هر cod جمع کل خرید ها رو نشون میده ولی sort از بزرگ به کوچیک نمیکنه !
ممنون

simorgh2000
شنبه 01 مهر 1402, 14:10 عصر
سلام

من تست کردم درست جواب میده شما فایلتون بذارید تا بررسی شود.