View Full Version : ترکیب دو Query با یکدیگر؟؟؟
soheil_programmer
سه شنبه 14 مهر 1388, 08:54 صبح
با سلام دوستان عزیز من یه مشکل کوچیک در زمینه دستورات T-SQL دارم لطفاً راهنمائی بفرمائید...
فرض بگيريد ما يك Table فاكتور داريم كه يك فيلد شماره فاكتور داره حال ممكنه ما در ميان ركوردهامون هر از گاهي چند شماره فاكتور يكسان داشته باشيم در نهايت ما يك گزارش ميخواهيم كه تعداد اين شماره فاكتورهاي يكسان را در جلوي اون تعداد ركوردي كه يكسانند بزنه!
یک تصویر نمونه هم گذاشتم....
http://barnamenevis.org/forum/attachment.php?attachmentid=37987&d=1254768091
لطفاً دستور T-SQL مربوطه به گزارشی (Report Sample) را که در بالا مثال زدم بنویسید.
با تشکر فراوان.
hueman
سه شنبه 14 مهر 1388, 16:36 عصر
ابتدا یه تابع مثلا به اسم GetCount درست کن
CREATE FUNCTION `GetCount`(fno int,cname varchar(200)) RETURNS int(11)
begin
declare fCount int;
select Count(*) into fCount from Factors where FactorNo = fno and CustomerName = cname;
return fCount;
end
این تابع مقادیر factor no و customer name رو میگیره و تعداد رکوردهای دارای این مقادیر رو بر می گردونه
و بعدش کوئریتون اینطوری می شه:
select f.* ,GetCount(f.FactorNo, f.CustomerName) as Total from Factors as f
موفق باشید
soheil_programmer
چهارشنبه 15 مهر 1388, 07:08 صبح
با تشکر از شما دوست عزیز بابت راهنمائی بسیار ارزندتون؛ لطفاً اگه میشه توضیح مختصری درباره Function ها در MySQL بدین...
ابتدا یه تابع مثلا به اسم GetCount درست کن
CREATE FUNCTION `GetCount`(fno int,cname varchar(200)) RETURNS int(11)
begin
declare fCount int;
select Count(*) into fCount from Factors where FactorNo = fno and CustomerName = cname;
return fCount;
end
این تابع مقادیر factor no و customer name رو میگیره و تعداد رکوردهای دارای این مقادیر رو بر می گردونه
و بعدش کوئریتون اینطوری می شه:
select f.* ,GetCount(f.FactorNo, f.CustomerName) as Total from Factors as f
موفق باشید
hueman
چهارشنبه 15 مهر 1388, 09:19 صبح
قابلیت نوشتن استورد پروسیجر و فانکشن از ورژن 5 به mysql اضافه شد، این قابلیت مث دیتابیس های دیگه ای که این قابلیت رو دارن برای استفاده مجدد از کدهای sql و انجام محاسبات در داخل دیتابیس و ... به کار میره، استورد پروسیجر ها مقداری رو بر نمی گردونن و صرفا یه کد رو اجرا می کنن و فانکشن ها مانند توابع در تمامی زبان های برنامه نویسی هستن و پارامترهایی رو به عنوان ورودی دریافت می کنن و مقداری رو بر می گردونن، اینجا (http://www.databasejournal.com/features/mysql/article.php/3569846/MySQL-Stored-Functions.htm) و اینجا (http://database-programming.suite101.com/article.cfm/mysql_stored_procedures_and_functions) دوتا مطلب مفید هست که میتونه بیشتر کمکتون کنه، البته به اعتقاد من منبعی بهتر از منوال خود mysql (http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html) برا یادگیری سینتکسش پیدا نمیشه
پیروز باشی
young_man1365
یک شنبه 19 مهر 1388, 10:11 صبح
تا جایی که من از شکل مثال فهمیدم هر مشتری شماره فاکتور خاص خودشو داره. در این صورت میشه از یه دستور select بصورت زیر هم استفاده کرد.
SELECT factor_no , name , COUNT(CONCAT(factor_no,name)) AS counter FROM table1 GROUP BY factor_no;
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.