PDA

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



jafari1
دوشنبه 03 بهمن 1384, 01:37 صبح
با سلام
میخواهم برای 3 جدول در اسکیوئل سرور که
جدول 1 - شامل اطلاعات کد و نام کالا
جدول 2- شامل اطلاعات کد کالا و قیمت خرید و تاریخ خرید کالا به ترتیب تاریخ
جدول 3 - قیمت اولین خرید - قیمت آخرین خرید و میانگین قیمت

دستوری بنویسم که با استفاده از جدول 1و 2 جدول 3 تکمیل شود
اولین رکورد جدول 2 بر اساس کد جدول 1 -> اولین قیمت
آخرین رکورد جدول 2 بر اساس کد جدول 1 -> آخرین قیمت
و میانگین قیمت هر کد " -> میانگین

به امید بهروزی

hmm
دوشنبه 03 بهمن 1384, 08:26 صبح
نمیدونم این روش منطقی هست یا نه

select code,name,
select price from t2 where b_date in (select max(bdate) from t2),
select price from t2 where b_date in (select min(bdate) from t2)
from t1
where code='1002'

jafari1
دوشنبه 03 بهمن 1384, 22:56 عصر
از لطف و مرحمت شما تشکر میکنم امیدوارم منطقی باشد البته به قول شما

jafari1
سه شنبه 04 بهمن 1384, 01:09 صبح
جناب hmm
با سلام دستورتان را تست کردم جواب نداد دستور فوق ( سلکت برای محاسبه کوچکترین تاریخ در جدول 2 را خطا میگیرد ( میگوید در subselect نمیتوانید بیش از یک ردیف برگردانید)

hmm
سه شنبه 04 بهمن 1384, 09:28 صبح
این select را به تنهایی اجرا کنید ببینید واقعا اینطوره؟
متاسفانه فعلا امکان تست برای خود من فراهم نیست!

hmm
سه شنبه 04 بهمن 1384, 09:30 صبح
آهان فهمیدم
بجای select price ها بنویسید select max(price) یا select min(price)

jafari1
سه شنبه 04 بهمن 1384, 19:05 عصر
البته دستور قبلی بدون پرانتز که اشکال دارد من با پرانتز اجرا کردم و حتی به تنهایی (البته وقتی
in (select min(date) )
را مثلا به
in ('84/10/15')
تغییر میدهم خطا نمیدهد

hmm
چهارشنبه 05 بهمن 1384, 08:21 صبح
متن خطا رو پست کنید
اگه از فیلد date استفاده کردید اونرو اینطوری به کار ببرید
select min([date]) from t1

jafari1
چهارشنبه 05 بهمن 1384, 20:08 عصر
جناب hmm
البته پیام خطا (بیش از یک نتیجه در ساب سلکت نمیتوان داشت) درست است چون ممکن است در یک تاریخ بیش از یک بار کالایی خریداری شده باشد موضوع date هم فیلد من اسم دیگری دارد