PDA

View Full Version : مشکل در نوشتن یک query



Naghibi
پنج شنبه 17 مرداد 1392, 09:25 صبح
با سلام خدمت همه دوستان
من میخوام توی برنامه ام مشخص کنم پروژه هایی رو که امروز توی مرحله تحلیل هستند. یک جدول برای تحویل و یک جدول برای تحلیل دارم. یعنی پروژه در ابتدا در جدول تحلیل با تاریخ ثبت میشه بعد که کارش تموم شد و قرار بود تحویل بشه، یک رکورد با تاریخ روز در جدول تحویل براش ثبت میشه. به صورت خلاصه اینطوری بگم که میخ.ام آخرین تاریخ تحلیل یک نفر رو پیدا کنم ببینم بعدش تحویلی داشته یا نه. من query رو به شکل زیر نوشتم که نمی دونم درست هم هست یا نه اما خطا میده!!

select * from Person where PCode not in (select PCode from Tahvil where Tahvil_date > (select max(Tahlil_date) from Tahlil group by Tahlil_date having max(Tahlil_date)<'1392/05/17'))

خطایی که میده
At most one record can be returned by this query

محمد سلیم آبادی
پنج شنبه 17 مرداد 1392, 11:16 صبح
خطایی که میده
At most one record can be returned by this queryاین پیغام خطا فکر نمیکنم مربوط باشه به SQL Server. در چه RDBMS ای این کوئری را اجرا میکنید؟
احتمال میدم این پیغام به این معناست که آخرین subquery بیش از یک مقدار بر میگردونه (به دلیل وجود group by) در نتیجه بر فقط رفع این error کافیه از کلمه ALL بعد از < استفاده کنید. مشابه کدی که نوشتم.

بر اساس فرضیات (نه ساختار جدول معلومه و نه داده ها) یک فیلتر به داخلی ترین subquery باید اضافه بشه. فکر میکنم در هر سه جدول person/tahvil/tahlil یک ستون به نام Pcode باید داشته باشید. بر اساس ستون Pcode در دو جدول tahlil و tahvil فیلتر انجام میشه.
چیزی شبیه به این.
select * from Person
where PCode not in (select PCode
from Tahvil
where Tahvil_date >all (select max(Tahlil_date)
from Tahlil
where tahvil.Pcode = Tahlil.Pcode
group by Tahlil_date
having max(Tahlil_date)<'1392/05/17'))