PDA

View Full Version : دستور تو Sql



ali643
دوشنبه 18 خرداد 1383, 00:46 صبح
سلام
یه سری اطلاعات داریم که به صورت زیر هست
ابعاد ____ تعداد
1.5*2.5 ____ 5
3*4 ____ 6
1.5*2.5 ____ 11
2.5*2.5 ____ 2
1.5*2.5 _____ 12
2.5*2.5 _____ 8


حالا می خوام که با دستورات Sql اینجوری بشه اطلاعات

ابعاد _____ تعداد
1.5*2.5 _____ 28
3*4 _____ 6
2.5*2.5 _____ 10

یعنی به اطلاعاتی که ابعادشون مثل هم است با هم جمع بشوند

مرسی

jirjirakk
دوشنبه 18 خرداد 1383, 01:06 صبح
Select Sum(تعداد) From tblName Group By ابعاد

hmm
دوشنبه 18 خرداد 1383, 07:13 صبح
آقا ببخشید ولی فکر کنم برنامه مربوط به فرش است ؟ نه :lol:

ali643
دوشنبه 18 خرداد 1383, 18:43 عصر
آقا ببخشید ولی فکر کنم برنامه مربوط به فرش است ؟ نه
زدی تو خال :گیج: :سکوت:

ali643
دوشنبه 18 خرداد 1383, 23:07 عصر
مهدی این شکل دستوریش هست

Select Field1[,Field2,..],Sum(Fiels) From Table Name ) Group By FieldList

من اینجوری می نویسم Error میده

Select No,Sum(No)From Qbar Group By Size

اینم Error ششش
مرسی

ali643
دوشنبه 18 خرداد 1383, 23:36 عصر
فکر کنم منظورمو نتونستم درست برسونم

بلاخره از روعکس بهتر معلومه

یه جدول دارم که این مشخصات داخلش هست می خوام داخل report بهصورت عکس در بیاد
چیکار کنم :?:

JavanSoft
سه شنبه 19 خرداد 1383, 13:26 عصر
1)

Select No,Sum(No)From Qbar Group By Size
وقتی خاصیت GroupByوجود دارد تمامی نتایج غیر محاسباتی (غیر از Sum/Max,...) باید در GroupByقید شوند

2) تعداد با Count شمارش می شود


Query1.Sql.Text:='Select Count(*) From Table GroupBy(Size)'


آدرس مقاله کامل
http://www.javansoft.com/learning1112.htm

ali643
سه شنبه 19 خرداد 1383, 19:39 عصر
نشد که نشد
آخرش این نمونه رو استاد کردم اینجا تا مشکلم بر طرف بشه

سار
چهارشنبه 20 خرداد 1383, 00:06 صبح
ای بابا زود تر این DB خودت رو میفرستادی.
اینم کدش همراه فایلش.

SELECT DISTINCT ([Size]) AS Expr1, Sum(Bar.[No]) AS [Sum], Count(Bar.[No]) AS [Count]
FROM Bar
GROUP BY ([Size]);

ali643
چهارشنبه 20 خرداد 1383, 00:28 صبح
مرسی برم تست کنم :موافق:

ali643
چهارشنبه 20 خرداد 1383, 01:52 صبح
مرسی سار عزیز
خیلی توپ بود فقط دیگه آخرین کارش اینه که یه شرط بذاریم که بر حسب شماره فاکتور این کارها رو انجام بده که فکر کنم با Having سرعت کار بیشتر باشه ؟
لطف کن و شرط رو به همین کد sql اضافه کن

مرسی

سار
چهارشنبه 20 خرداد 1383, 10:27 صبح
مرسی سار عزیز
خیلی توپ بود فقط دیگه آخرین کارش اینه که یه شرط بذاریم که بر حسب شماره فاکتور این کارها رو انجام بده که فکر کنم با Having سرعت کار بیشتر باشه ؟
لطف کن و شرط رو به همین کد sql اضافه کن

مرسی


SELECT DISTINCT ([Size]) AS Expr1, Sum(Bar.[No]) AS [Sum], Count(Bar.[No]) AS [Count]
FROM Bar
GROUP BY ([Size])
Having (FactorNO=X);
ربطی به سرعت و این چیزها نداره وقتی از Group استفاده میکنی باید برای شرط از Having استفاده کنی نه Where.

ali643
چهارشنبه 20 خرداد 1383, 17:39 عصر
سلام

ُسار این دستور گیر میده به من


QuickReport1.ADOQuery1.SQL.Clear;
QuickReport1.ADOQuery1.SQL.Add('SELECT DISTINCT ([Size]) AS Expr1, Sum(Bar.[No]) AS [Sum], Count(Bar.[No]) AS [Count]FROM Bar GROUP BY ([Size])Having([Code_Factor]= :Param1)');
QuickReport1.ADOQuery1.Parameters.ParamByName('par am1').Value:=Edit1.Text;
QuickReport1.ADOQuery1.ExecSQL;

اگه لطف کنی تو همون Db برام بنویسی ممنونت می شم

سار
چهارشنبه 20 خرداد 1383, 23:44 عصر
اولا پیغامش چیه؟
دوما تو داری با فرمت اکسس تو دلفی مینویسی .
من تا حالا اینطوری ننوشتم و فکر کنم اشکال از این باشه. این رو امتحان کن :


QuickReport1.ADOQuery1.SQL.Clear;
QuickReport1.ADOQuery1.SQL.Add('SELECT DISTINCT Size AS Expr1, Sum(Bar.No) AS Majmo, Count(Bar.No) AS Tedad FROM Bar GROUP BY (Size) Having (Code_Factor= :Param1);
QuickReport1.ADOQuery1.Parameters.ParamByName('Par am1').Value:=Edit1.Text;
QuickReport1.ADOQuery1.ExecSQL;

ali643
پنج شنبه 21 خرداد 1383, 00:25 صبح
مشکل از دستور Select نیست فقط با اضافه کردن Having گیر میده

Unspecified error

سار
پنج شنبه 21 خرداد 1383, 14:40 عصر
نیازی به تست DB نیست.
من کد شما رو با دقت نخوندم. کاملا واضح است که برای اجرای دستورات Select باید از متد Open استفاده کرد و برای اجرای دستورات Insert,Update,Delete از متد ExeSQL.
این قسمت رو اصلاح کنید.


QuickReport1.ADOQuery1.Open;

ali643
پنج شنبه 21 خرداد 1383, 23:57 عصر
بازم همون error پیشی رو میده
من با یه Temp تیبل کارو راه انداختم ولی راهی دیگه ای نداره که با شرط بشه کاری کرد؟

Gladiator
جمعه 22 خرداد 1383, 01:53 صبح
http://www.w3schools.com/sql/default.asp

سار
جمعه 22 خرداد 1383, 17:41 عصر
آقا هر کاری کردم نشد برنامه رو برات بفرستم.
ولی این کدش. که جواب داد.


unit Unit15;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids;

type
TForm1 = class(TForm)
cn: TADOConnection;
Button1: TButton;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Edit1: TEdit;
Label1: TLabel;
ADOQuery1: TADOQuery;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
// procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Math;

//uses Unit150;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var
StrSQL:String;
begin
StrSQL:='SELECT DISTINCT ([Size]) AS Expr1, Sum(Bar.[No]) AS [Sum], Count(Bar.[No]) AS [Count], Bar.Code_Factor FROM Bar GROUP BY ([Size]), Bar.Code_Factor';
If Trim(Edit1.Text)<>'' Then
StrSQL:=StrSQL+' Having Bar.Code_Factor='+Edit1.Text;
with ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Text:=StrSQL;
Open;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
Var
StrSQL:String;
begin
If Trim(Edit1.Text)<>'' then begin
StrSQL:='SELECT DISTINCT ([Size]) AS Expr1, Sum(Bar.[No]) AS [Sum], Count(Bar.[No]) AS [Count], Bar.Code_Factor FROM Bar GROUP BY ([Size]), Bar.Code_Factor Having Bar.Code_Factor=:Param1';
with ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Text:=StrSQL;
Parameters.ParamByName('Param1').Value:=Edit1.Text ;
Open;
end;
end;
end;

end.

ali643
جمعه 22 خرداد 1383, 18:29 عصر
سلام

سار عزیز خیلی گل کاشتی توپ بود کار داد توپه توپ
مرسی از اینکه خیلی وقت گذاشتی
دستت درد نکنه

گلادی از تو هم ممنونم که سایت رو بهم استاد کردی

مرسی

Mohammad S
جمعه 22 خرداد 1383, 19:22 عصر
گلادی از تو هم ممنونم که سایت رو بهم استاد کردی
ببخشید شما نسبتی با آقای انصاری (بازیگر نقش کوروش پیردوست) ندارید؟ :mrgreen:
شاید هم خودش باشید؟! :متفکر:

ali643
شنبه 01 اسفند 1383, 23:46 عصر
سلام

از اون روز که کارمون با این برنامه تموم شد حالا با خوده اکسس گیر پیدا کردیم حالا همه بانک ها رو Dbisam کردیم و فقط بازم موندم تو همین دستوره البته تو Help Dbisam در مورد Select Statement جستجو کردم و یه خوره این دستوره رو این ور اون ورش کردم کار نداد که نداد دوستان میشه معادل همین دستور رو تو dbisam بنویسند



procedure TForm1.Button2Click(Sender: TObject);
Var
StrSQL:String;
begin
If Trim(Edit1.Text)<>'' then begin
StrSQL:='SELECT DISTINCT ([Size]) AS Expr1, Sum(Bar.[No]) AS [Sum], Count(Bar.[No]) AS [Count], Bar.Code_Factor FROM Bar GROUP BY ([Size]), Bar.Code_Factor Having Bar.Code_Factor=:Param1';
with ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Text:=StrSQL;
Parameters.ParamByName('Param1').Value:=Edit1.Text ;
Open;
end;
end;
end;

مرسی