ورود

View Full Version : مکشل با عدم نمایش سطر تکراری برا اساس یک فیلد و نمایش تمامی فیلد ها در جواب



ali-akbar
سه شنبه 09 تیر 1394, 09:28 صبح
با سلام
من مشکلم اینکه معلوم نیس با توجه به join تعداد فیلد هام چند تا است و فقط میخوام disinct برا روی یک فیلد اعمال بشه و در جواب همه فیلد هار ا ببینم که تکرار بر اساس اون فیلد هم اعمال بشه در هر حالی امتحان کردم فقط فیلد city در جواب میاد
یه همچین دستوری که خب این جواب نمیده
select * ,distinct(city) from Customers

golbafan
سه شنبه 09 تیر 1394, 09:34 صبح
جداول و کوئری هاتون رو کاملتر بزارید ببینیم مشکل از کجاست
اینطوری نمیشه درست نظر داد

ali-akbar
سه شنبه 09 تیر 1394, 11:01 صبح
اقا مرسی از لطفت
شما بیا اینجا
http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_distinct
مثلا روی فیلد city میخوام تکراری ها حذف بشن ولی در جواب همه فیلد ها را نمایش بده

jamal_ch
چهارشنبه 10 تیر 1394, 13:23 عصر
سلام

SELECT * FROM Customers where city in (select distinct city from Customers );

ali-akbar
چهارشنبه 10 تیر 1394, 18:41 عصر
سلام و تشکر
اما اینکه شهر های تکراری را حذف نمیکنه با همین روال اما شهرهای تکراری حذف بشن

مهدی نان شکری
چهارشنبه 10 تیر 1394, 20:19 عصر
با سلام
شما در جدولتان فرض کنید سه فیلد دارید با نام های A,B,C، اگر فرض بر این شود که روی فیلد C تکراری ها حذف شود نتیجه حالت زیر چه خواهد بود؟
َA,B,C
1,1,1
2,1,1
3,2,1

ali-akbar
چهارشنبه 10 تیر 1394, 23:25 عصر
تشکر خوب در این صورت کوری نال برمیگردد اما مثال من همون لینکی هس که قرار دادم و اینطور که شما میگید نمیشه میخوام شهرهای تکراری را حذف کنه حالا با هر اولویت که فرقی نمیکنه ولی بقیه فیلد ها در جواب نمایش بده نیاد فقط city را نمایش بده

مهدی نان شکری
چهارشنبه 10 تیر 1394, 23:55 عصر
فرض کنید شما در جدول اشخاص دو رکورد دارید
مهدی نان شکری / تهران
علی اکبر / تهران
حالا اگر شهر تکراری حذف بشود با شرط وجود نام در نتیجه خروجی چطور باید باشه؟ این اساس نظام پایگاه داده رو زیر سوال نمی بره؟

ali-akbar
پنج شنبه 11 تیر 1394, 00:55 صبح
ای بابا چیکار داریم به پایگاه داده و اساسش من این کوری را برای کاری احتیاج دارم یکی از رکورد ها را نمایش بده کافی برام در کل کارم با این دیتابیس نیس من تا سوال کردم دوستان گفتن دیتا بیس چه جوره منم گفتم این مثال

SabaSabouhi
پنج شنبه 11 تیر 1394, 08:53 صبح
ای بابا چیکار داریم به پایگاه داده و اساسش من این کوری را برای کاری احتیاج دارم یکی از رکورد ها را نمایش بده کافی برام در کل کارم با این دیتابیس نیس من تا سوال کردم دوستان گفتن دیتا بیس چه جوره منم گفتم این مثال

سلام
شما تو پرسش نوشتی: select *, distinct( city) from customers
خوب این شدنی نیست. دوست خوبمون NanShekari با مثال برات توضیح داد که این نمی‌شه که شما یک شهر رو بدون تکرار و در کنار باقی اطلاعات بیاری
اگه فقط فهرست شهر‌ها رو می‌خوای باید اون «*» رو حذف کنی ( تمام مشکل بابت همون «*» هست )
به این شکل فقط فهرست شهرهایی رو خواهی داشت که تو جدول customers وجود دارن.
اما اگه «*» وجود داشته باشه در هر صورت تمام سطرهای جدول مشتریان رو در خروجی خواهی دید.

صبا صبوحی

ali-akbar
پنج شنبه 11 تیر 1394, 14:36 عصر
سلام فرض کنید شما یه گزارش گرفتی حالا توی اون فردی هست که برای اقای x کار کرده و برای اقای Y هم کار کرده این میاد توی جواب کوری
خوب این شخص ای دیش تکرار شده شمارش همینطور اسمش همینطور حالا میخواهیم بر اساس این گزارش پیامک ارسال کنیم خوب تکراری توش زیاده چه طور حذف کنیم

SabaSabouhi
شنبه 13 تیر 1394, 00:32 صبح
سلام فرض کنید شما یه گزارش گرفتی حالا توی اون فردی هست که برای اقای x کار کرده و برای اقای Y هم کار کرده این میاد توی جواب کوری
خوب این شخص ای دیش تکرار شده شمارش همینطور اسمش همینطور حالا میخواهیم بر اساس این گزارش پیامک ارسال کنیم خوب تکراری توش زیاده چه طور حذف کنیم

سلام
من که تو پست قبلی برات نوشتم. راه حل حذف اطلاعات اضافی هست.
می‌خوای برای این شخص پیام کوتاه ارسال کنی، پس تو query فقط نیاز به نام شخص و شماره موبایلش داری، فقط همین دو فیلد رو تو select بیار. در این حالت distinct دقیقاً
کاری می‌کنه که مورد نظرت هست.
بعضی وقت‌ها لازمه برای چند تا کار چند تا query مختلف داشته باشیم. برای این منظور که شما داری، یک query ساده لازم داری که مثلاً همین دو ستون رو داشته باشه.

صبا صبوحی

hamedjim
چهارشنبه 01 اسفند 1397, 10:37 صبح
دوستان سلام. در همین زمینه من هم مشکل مشابهی دارم.
برای توضیح دادنش از همین مثال شهر استفاده می کنم.
فرض کنید فیلدهای ما اینها هستند:
نام شهر (City)، جمعیت شهر (Population)، مساحت شهر (Area)، نام مشتری (CustomerName)، شماره مشتری (CustomerPhone)
و فرض کنید دیتای ما به این صورت هست:


تهران
12000
123
Ali
456


تهران
12000
123
Reza
789


مشهد
5000
125
Ali
358


تهران
12000
123
X
012


مشهد
5000
125
Y
354



همون طور که می بینید سه تا فیلد اول برای تمام مشتریان یک شهر ثابت هست.
من نیاز دارم تا خروجی به شکل زیر داشته باشم:


تهران
12000
123


مشهد
5000
125






بنابراین همون طور که می دونیم distinct برای نمایش بیشتر از یک فیلد استفاده نمیشه.
چه راه حلی برای این موضوع هست؟:متفکر:

hamid_hr
چهارشنبه 01 اسفند 1397, 13:07 عصر
select distinct city,Population,Area from tblcity
یا
select city,Population,Area from tblcity group by city,Population,Area

hamedjim
سه شنبه 14 اسفند 1397, 08:53 صبح
حمید عزیز، ممنون از راهنمایی. اون مشکل رفع شد.

اما یه سوال دیگه:

فرض کنید لیستی از فروشندگان داریم که چند محصول خاص رو می فروشند (مثلا سیب، گلابی، هلو) به این صورت که جدول شامل سریال فروش، نام فروشنده، مبلغ فروش سیب، مبلغ فروش گلابی و مبلغ فروش هلو باشه.
در یک گزارش می خوام برای هر فروشنده به تفکیک جمع فروش هر محصول و همچنین فروش کل رو به شکل زیر لیست کنم:



نام فروشنده


فروش سیب




فروش گلابی




فروش هلو




فروش کل





علی

2500


2300


0


4800



رضا

5000


0


8000


13000



حسین

3000


3000


3000


9000




کد SQL برای این حالت چطوری نوشته میشه؟ با همین کامند GROUP BY میشه این رو نوشت؟

narges1369
سه شنبه 28 خرداد 1398, 19:35 عصر
سلام جناب مشکل بالارو چطور حل کردید من با راهنمایی های دوستمون مشکلم حل نشد

Mahmoud.Afrad
چهارشنبه 29 خرداد 1398, 07:15 صبح
سلام جناب مشکل بالارو چطور حل کردید من با راهنمایی های دوستمون مشکلم حل نشد

کدوم مشکل؟ شما سوال خودت رو همراه اسکریپت جدول بزار.