# Native Code > برنامه نویسی در Delphi > بانک های اطلاعاتی در Delphi > سوال: چگونگی join کردن سه جدول با دستور sql

## farzadkamali

درود بر دوستان

چطوری میشه سه جدول رو با هم جوین کردن؟

من در join کردن دو جدول با هم مشکلی ندارم و با استفاده از دستور زیر کاملاَ کار میکنه.


  adoquery1.Close;
   adoquery1.SQL.Text:='select  members.unitnum,members.bedehistatus,members.mande  h,paycharge.unitnum,paycharge.amountpayable,paycha  rge.status,paycharge.costno  from paycharge LEFT JOIN members on members.unitnum=paycharge.unitnum  where members.unitnum=:aunitnum';
   adoquery1.Parameters.ParamByName('aunitnum').Value  :=edit1.Text;
   adoquery1.Active:=true;


لازم به ذکر هست که من سه تا جدول دارم به نام های members (واحدها یا  اعضاء) و cost (هزینه ها) و payment (پرداختی ها) که برای صدور صورتحساب و  گذارش گیری در fast report به هر سه نیاز دارم. در کد بالا دو جدول members  و payment که در ستون unitnum (شماره واحد) با هم مشترک هستند، با هم join  شدن.
ولی من می خوام هرسه رو با هم جوین کنم. آیا دستوری هست که این کار رو انجام بده یا باید دوتا دوتا جوین کنم؟
من اول members و payment  رو در یک ado query جوین کردم(که کدش رو در بالا  مشاهده کردید). و اومدم ado query رو با جدول payment جوین کنم که نشد. یا  اینکه من بلد نبودم.
لازم به ذکر هست که جدول cost ستون unitnum رو نداره. پس در کل با جدول  members هیچ ارتباطی نداره. فقط دارای یه ستون به نام شماره یا ردیف (row)  هست که این ستون در جدول payment هم وجود داره. و این دو جدول با استفاده  از این ستون به هم ربط داده میشن.

ممنون میشم اگه راهنماییم کنین.

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

----------


## Tiam121

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

----------


## farzadkamali

> بهترین کار اینه که از sql استفاده کنی تا واست به همون شکلی که میخوای کوئری رو بسازه.
> اگر موفق نشدی بگو واست یه نمونه بزارم


عزیز پایگاه من اکسس هست. و همونطور که گفتم می خوام از کوئری و دستور sql  استفاده کنم.

----------


## Tiam121

یه نمونه:
SELECT a.au_lname, a.au_fname, t.title FROM authors a INNER JOIN titleauthor ta    ON a.au_id = ta.au_id JOIN titles t    ON ta.title_id = t.title_id WHERE t.type = 'trad_cook'

جای جدول ها و فیلدها ، جدول ها و فیلد های خودت رو بزار

----------


## morteza147

Select * from ((Table1
Left Join Table2 on Table111.id=Table2.id)
Left Join Table3 on Table1.id=Table3.id)

----------


## SayeyeZohor

عزيز جان فكر كنم سوالتون به بخش دلفي ربط نداشته باشه ها ....
بهتره پستتون رو انتقال بدين

----------


## farzadkamali

> عزيز جان فكر كنم سوالتون به بخش دلفي ربط نداشته باشه ها ....
> بهتره پستتون رو انتقال بدين


عزیز دل من می خوام سه جدول رو در دلفی با هم جوین کنم. که حل شد. اونوقت شما چرا میگی ربطی نداره؟
که این کار معمولاً با دستور sql انجام میشه. راه حل دیگه ای دارین بفرمایین. اصل منظور من اینه که این کار در دلفی انجام بشه حالا با هر دستوری که می خواد باشه.

----------


## farzadkamali

با تشکر از پاسخ دوستان.

در ادامه دو مثال دیگه هم آوردم درباره این موضوع


SELECT [column names]FROM tableA AS a, tableB AS b, tableC as cWHERE b.blah = a.blahAND c.foo = a.fooAND [more where conditions]



SELECT [column names]FROM     tableA AS a     LEFT JOIN tableB AS b ON b.blah = a.blah    JOIN tableC as c ON c.foo = a.foo

----------


## یوسف زالی

> عزیز دل من می خوام سه جدول رو در دلفی با هم جوین کنم. که حل شد. اونوقت شما چرا میگی ربطی نداره؟


نه برادر من ربط نداره.
خوبه که مشکلتون حل شد اما هر کار که بشه با دلفی کرد که به دلفی ربط نداره. مثلا شما الگوریتم n وزیر رو اینجا بپرسی معمولا کسی جواب نمی ده چون به اینجا تعلق نداره.
تالار مناسب TSQL بود.

----------

