PDA

View Full Version : مبتدی: ارور sql



niknam_mh
دوشنبه 07 فروردین 1396, 09:13 صبح
دوستان با سلام
میخواستم بدونم ارور زیر برا چی هست و اشکال کوئری چی هست و چی به جاش جایگزین کنم بهتر هست؟

144766
البته اگه sum بگیرم مشکلی نداره.ولی اگه بخوام اینجوری ساب بگیرم خطا میده.

En_MK
دوشنبه 07 فروردین 1396, 09:52 صبح
سلام
SubQuery که نوشتید بیشتر از یک جواب دارد
اول subquery رو اجرا کنید

niknam_mh
دوشنبه 07 فروردین 1396, 11:03 صبح
سلام
SubQuery که نوشتید بیشتر از یک جواب دارد
اول subquery رو اجرا کنید

سلام ممنون از پاسختون
ببخشید چطور باید اول subquery رو اجرا کنم ؟؟

codedeveloper
دوشنبه 07 فروردین 1396, 13:51 عصر
سلام،
دوست عزیز خطا کاملا مشخصه...
کوئری داخلی بیش از یک رکورد برمیگردونه و این در حالتی که شما ازش استفاده میکنید درست نیست.
برای رفع این مشکل شماره فاکتور رو هم در عبارت where بیاورید تا کالا با کد 4 رو در یک فاکتور خاص جستجو کنه نه در کل ریزفاکتور!!!!
البته اگه اصل مطلب رو که برای چی و با چه شرایطی میخوایید کوئری بزنید رو میفرمودید، به نظر من راه بهتری هم برای این کار وجود داره...

niknam_mh
دوشنبه 07 فروردین 1396, 16:12 عصر
سلام،
دوست عزیز خطا کاملا مشخصه...
کوئری داخلی بیش از یک رکورد برمیگردونه و این در حالتی که شما ازش استفاده میکنید درست نیست.
برای رفع این مشکل شماره فاکتور رو هم در عبارت where بیاورید تا کالا با کد 4 رو در یک فاکتور خاص جستجو کنه نه در کل ریزفاکتور!!!!
البته اگه اصل مطلب رو که برای چی و با چه شرایطی میخوایید کوئری بزنید رو میفرمودید، به نظر من راه بهتری هم برای این کار وجود داره...
سلام
با تشکر از شما دوست عزیز و ممنوم از پاسختون
من یه جدول به اسم t_rizfactor دارم که ریز فاکتورهام رو درون اون ثبت میکنم مثل شکل زیر:


144768


در جدول بالا فیلد های fyjoze,fykol,mabalghkol برا ورود و خروج کالا مشترک هست یعنی اونا رو دوبار تعریف نکردم حالا میخوام یه کوئری بنویسم که اطلاعاتی مثل شکل زیر رو بهم بده :

144769

این هست که دست به دامن ساب کوئری شدم برا نشون دادن فیلدهای مشترک برای ورود و خروج کالا ولی ارور میده دوستان اگه میشه راهنمایم کنید..

codedeveloper
دوشنبه 21 فروردین 1396, 17:52 عصر
با سلام،
دوست من خوشحالم که تونستم کاری برات انجام بدم،
در نمونه بالا، شما چند نوع اطلاعات رو در یک گرید میخوایید نشون بدین، که این از نظر کاری خیلی خوب و درست هستش، ولی باید دقت داشته باشید که ماهیت این اطلاعات با هم فرق دارن، به عنوان مثال: ماهیت ابتدای دوره با خرید و فروش فرق میکنه و شما هم اطلاعات اونرو در یک جدول قرار ندادین(که البته کاره درستی هستش)، اما در همیچین مواقعی باعث دردسر میشه و کارو سخت میکنه.... :لبخندساده::لبخندساده::لبخن ساده:
در یه همچین مواقعی باید از stored procedure ها استفاده بشه که بتونید چند کارو همزمان انجام داده و در آخر یک نتیجه کلی رو به خروجی ارسال کنید.
البته میشه این مورد شما رو با یک کوئری هم حل کرد، به این صورت که شما باید اطلاعات هر دو جدول(جدول ابتدای دوره و جدول خرید و فروش) رو با هم union کنید و دقت داشته باشید که در union باید تعداد فیلدهای هر کدام از select ها برابر باشد، پس شما مجبورید برای هر کدام از فیلدهای که در جدول وجود ندارد مقدار null رو یا رشته خالی یا صفر رو با نام alias وارد کنید تا ترتیب فیلد ها به هم نخوره و در آخر شکل کلی خروجی به همون ترتیبی بشه که دلتون میخواد.
بعد در گرید به جای اون null یا خالی ها تنظیم کنید که مقداری نشون نده و رشته خالی بندازه تا کاربر هم دچار اشتباه نشه..
امید وارم موفق باشین

niknam_mh
دوشنبه 21 فروردین 1396, 19:24 عصر
با سلام،
دوست من خوشحالم که تونستم کاری برات انجام بدم،
در نمونه بالا، شما چند نوع اطلاعات رو در یک گرید میخوایید نشون بدین، که این از نظر کاری خیلی خوب و درست هستش، ولی باید دقت داشته باشید که ماهیت این اطلاعات با هم فرق دارن، به عنوان مثال: ماهیت ابتدای دوره با خرید و فروش فرق میکنه و شما هم اطلاعات اونرو در یک جدول قرار ندادین(که البته کاره درستی هستش)، اما در همیچین مواقعی باعث دردسر میشه و کارو سخت میکنه.... :لبخندساده::لبخندساده::لبخن ساده:
در یه همچین مواقعی باید از stored procedure ها استفاده بشه که بتونید چند کارو همزمان انجام داده و در آخر یک نتیجه کلی رو به خروجی ارسال کنید.
البته میشه این مورد شما رو با یک کوئری هم حل کرد، به این صورت که شما باید اطلاعات هر دو جدول(جدول ابتدای دوره و جدول خرید و فروش) رو با هم union کنید و دقت داشته باشید که در union باید تعداد فیلدهای هر کدام از select ها برابر باشد، پس شما مجبورید برای هر کدام از فیلدهای که در جدول وجود ندارد مقدار null رو یا رشته خالی یا صفر رو با نام alias وارد کنید تا ترتیب فیلد ها به هم نخوره و در آخر شکل کلی خروجی به همون ترتیبی بشه که دلتون میخواد.
بعد در گرید به جای اون null یا خالی ها تنظیم کنید که مقداری نشون نده و رشته خالی بندازه تا کاربر هم دچار اشتباه نشه..
امید وارم موفق باشین

سلام
ممنون دوست خوبم
من دوست داشتم سلکتم رو با یه
کوئری انجام بدم ولی نشد شاید از بی تجربه بودنم باشه ولی بهر حال داخل محیط وی بی با کد نویسی حلش کردم از شما هم بابت پاسختون بسیار ممنون و متشکرم.

:قلب::تشویق: