PDA

View Full Version : سوال: چگونگی join کردن سه جدول با دستور sql



farzadkamali
یک شنبه 20 اسفند 1391, 09:46 صبح
درود بر دوستان

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

من در 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
سه شنبه 22 اسفند 1391, 08:36 صبح
بهترین کار اینه که از sql استفاده کنی تا واست به همون شکلی که میخوای کوئری رو بسازه.
اگر موفق نشدی بگو واست یه نمونه بزارم

farzadkamali
سه شنبه 22 اسفند 1391, 08:44 صبح
بهترین کار اینه که از sql استفاده کنی تا واست به همون شکلی که میخوای کوئری رو بسازه.
اگر موفق نشدی بگو واست یه نمونه بزارم

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

Tiam121
سه شنبه 22 اسفند 1391, 10:57 صبح
یه نمونه:
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
یک شنبه 04 فروردین 1392, 13:40 عصر
Select * from ((Table1
Left Join Table2 on Table111.id=Table2.id)
Left Join Table3 on Table1.id=Table3.id)

SayeyeZohor
یک شنبه 04 فروردین 1392, 21:48 عصر
عزيز جان فكر كنم سوالتون به بخش دلفي ربط نداشته باشه ها ....
بهتره پستتون رو انتقال بدين

farzadkamali
دوشنبه 12 فروردین 1392, 23:15 عصر
عزيز جان فكر كنم سوالتون به بخش دلفي ربط نداشته باشه ها ....
بهتره پستتون رو انتقال بدين

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

farzadkamali
دوشنبه 12 فروردین 1392, 23:23 عصر
با تشکر از پاسخ دوستان.

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



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

یوسف زالی
سه شنبه 13 فروردین 1392, 01:15 صبح
عزیز دل من می خوام سه جدول رو در دلفی با هم جوین کنم. که حل شد. اونوقت شما چرا میگی ربطی نداره؟

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