PDA

View Full Version : کوئری گرفتن از یک کوئری



ariobarzan
پنج شنبه 20 مهر 1391, 11:02 صبح
سلام
آیا میشه از یک کوئری کوئری گرفت؟
در حالت عادی ما از table کوئری می گیریم. حالا فرض کنیم بخواهیم از نتیجه این کوئری یک کوئری دیگه بگیریم
آیا امکان پذیره؟
اگه هست sql.text اون چه جوری نوشته میشه؟
ممنون

سعید صابری
پنج شنبه 20 مهر 1391, 11:25 صبح
شرط ها را بیشتر کن

select * from table
where (id <500) and (name ='saeed')and...

ariobarzan
پنج شنبه 20 مهر 1391, 11:38 صبح
مسئله همین جاست . کوئری اول که مربوط به بخش گزارش گیری هست و ممکنه بیش از پنجاه شرط رو در خودش داشته باشه البته با توجه به شرط های تعیین شده از طرف کاربر.
فرض کنیم از یک بانک اطلاعات پرسنلی کاربر با تعیین بیش از پنجاه شرط به یک سری رکورد میرسه.
حالا من میخوام از این نتیجه حاصل شده ده تا کوئری دیگه بگیرم و نتیجه اونها رو توی یک گزارش بیارم
اگه بجای mytable در جمله فرضی
select * from mytable
بتونم اون کوئری رو استفاده کنم مشکلم حله.

سعید صابری
پنج شنبه 20 مهر 1391, 12:22 عصر
فکر کنم بهترین راه همین باشه شما که پنجاه تا شرط نوشتی 10 تا دیگه هم روش بعید میدونم چنین چیزی امکان پذیر باشه
البته بستگی به طراحی دیتابیست داره میتونی برای راحت تر شدن کارت از View و ... هم استفاده کنی

ariobarzan
پنج شنبه 20 مهر 1391, 13:13 عصر
بنده که عرض کردم این پنجاه تا شرط با توجه به تعیین شروط توسط کاربر در فرم گزارش کم و زیاد میشن یعنی هر شرطی که کاربر تیک بزنه و مقدار دهی کنه جمله شرطی اون به شرط کوئری and میشه.
در مورد view که فرمودید لطفا یکم بیشتر توضیح بدید

hossein_h62
پنج شنبه 20 مهر 1391, 14:00 عصر
سلام
همونطور که دوستان اشاره کردن یک راهش استفاده از View هست، ویو ها کوئری هستن که بنا به نیاز در دیتابیس نوشته و ذخیره میشن و فراخوانی اونها مشابه باز کردن یک جدول هست.
غیر از استفاده از ویوها میتونید از select های تودرتو هم استفاده کنید :
Select * From (Select * From Personel Where Depcode = 1) As A
Where Scode = 41020
یا مثلا :
SELECT * FROM Personel
WHERE Scode in
(SELECT Scode FROM Personel
WHERE DepCode=1)
و ...

Felony
پنج شنبه 20 مهر 1391, 16:39 عصر
اگر مشکلت با Query گرفتن از نتیجه یک Query حل میشه :

SELECT LName, FName FROM (SELECT * FROM Patients WHERE PID Between 1 AND 10)as TempQuery WHERE RegDate <= GETDATE()

در کد بالا ابتدا افرادی که ID اونها بین 1 تا 100 هست استخراج و سپس نتیجه این اسکریپت در TempQuery ریخته میشه و حالا از TempQuery لیست افرادی که تاریخ ثبت نامشون امروز هست استخراج میشه .