PDA

View Full Version : حرفه ای: یک کواری نسبتا حرفه ای



prg_mail
یک شنبه 28 مرداد 1397, 07:03 صبح
سلام

فرض کنید ما یک سامانه صدور بلیط داریم.
یک جدول وجود دارد که حاوی فیلدهای زیر است
name,trace,...


name : نام مشتری
trace : شماره بلیط مشتری


برای هر مشتری به تعداد نفرات رکورد با trace یکسان و name یکسان تولید میشود، مطابق تصویر زیر


148717


خوب بعد از گذشت مدتی ما میخاهیم بررسی کنیم ایا بلیط تکراری صادر شده و اگر صادر شده تعداد و مقدار خود trace تکراری را بدست بیاوریم.

پس باید رکوردهایی را پیدا کنیم که trace یکسان و name متفاوت داشته باشند.

یعنی رکوردهای زیر، که بلیطهایی (trace) یکسان، برای مشتریهای متفاوت (name) صادر شده است.

148718

چند روزی درگیره پیدا کردن این query هستم

گوگل و خیلی گشتم کواری های مختلفم خیلی تست کردم :عصبانی++:
لطفا کمکم کنید.


با تشکر از کاربر charcharkh (http://barnamenevis.org/member.php?368779-charcharkh)

charcharkh
یک شنبه 28 مرداد 1397, 10:07 صبح
سلام ببین این سوالی که الان شما مطرح کردید با اون تاپیک قبلی زمین تا آسمون فرق داره ولی بهر حال این لینک رو بخون

https://www.w3schools.com/sql/sql_distinct.asp

https://www.w3resource.com/w3r_images/sql-count-distinct1.png

فکر کنم منظورت این بود درسته ؟؟؟!!!

این لینک رو بخون


https://www.w3resource.com/sql/aggregate-functions/count-with-distinct.php

prg_mail
یک شنبه 28 مرداد 1397, 17:55 عصر
:گریه:
مهندس من همه اینا رو بلدم
distinct
انتخاب رکوردهای غیر تکراری است
خیلی هم حالات مختلف رو تست کردم اما نتیجه نداد
از اساتیدی که مشاهده میکنند مشکل رو انتظار کمک میره تو این شرایط بد اقتصادی

prg_mail
یک شنبه 28 مرداد 1397, 17:58 عصر
سلام ببین این سوالی که الان شما مطرح کردید با اون تاپیک قبلی زمین تا آسمون فرق داره ولی بهر حال این لینک رو بخون

https://www.w3schools.com/sql/sql_distinct.asp

https://www.w3resource.com/w3r_images/sql-count-distinct1.png

فکر کنم منظورت این بود درسته ؟؟؟!!!

این لینک رو بخون


https://www.w3resource.com/sql/aggregate-functions/count-with-distinct.php



این تصویری که ارسال کردین 50 درصد جواب منه که خیلی سادست
رکورهایی رو پیدا میکنه که کدشون یکسانه
من دستوری میخام که
کدشون یکسان و حتما name متفاوت داشته باشند.

prg_mail
یک شنبه 28 مرداد 1397, 18:25 عصر
اینو پیدا کردم ظاهرا درسته اما میزنم mysql قفل میکنه !!!


select distinct trace from payment as t1
where exists (select * from payment as t2

where t2.name <> t1.name

and t2.trace = t1.trace

and LENGTH(trace)=7

)

prg_mail
یک شنبه 28 مرداد 1397, 19:24 عصر
موفق شدم

select s.id, t.* from payment s
join (
select name, trace, count(*) as qty
from payment
group by name, trace
having count(*) > 1
) t on s.name <> t.name and s.trace = t.trace

prg_mail
دوشنبه 29 مرداد 1397, 17:13 عصر
روش بهتر

SELECT DISTINCT a.trace ,b.name FROM payment a,payment b WHERE a.trace=b.trace and a.name <> b.name