PDA

View Full Version : مبتدی: کمک در دستور SELECT برای دو جدول



pandco
دوشنبه 01 دی 1393, 08:51 صبح
با سلام خدمت دوستان و اساتید ارجمند

دو جدول بنام Table1,Table2 دارم و فیلدهای آنها :
Table1 :
ID autonumber
(شماره پدر)NuPar Number
Name Text
LName Text

Table2:
ID autonumber
(شماره پدر)Nupar Number
ChildName Text

با دستور زیر پدر و فرزند ها رو میارم (هر پدر مثلا 4 فرزند داشته باشه 4 رکورد تو dbgrid میاره):



Select table1.*,Table2.* From Table1,Table2 Where Table1.NuPar=Table2.NuPar Order By Table1.NuPar


اما میخوام پدر و آخرین فرزندی که وارد شده رو بیاره (یک رکورد از هر پدر و آخرین فرزندی که ذخیره شده رو بیاره) ، آیا از Group By استفاده کنم یا چه دستور بنویسم ؟

ممنون

khoshblagh
دوشنبه 01 دی 1393, 12:24 عصر
با سلام
اگر یک فیلد برای جدول دوم که شماره ترتیب ثبت فرزند باشد اضافه نموده و Order By را بصورت نزولی تنظیم نمائید، مسئله حل میشود. البته این یک راه از چندین راه میباشد.

یوسف زالی
دوشنبه 01 دی 1393, 12:31 عصر
سلام.



اگر یک فیلد برای جدول دوم که شماره ترتیب ثبت فرزند باشد اضافه نموده و Order By را بصورت نزولی تنظیم نمائید، مسئله حل میشود. البته این یک راه از چندین راه میباشد.

بعد اگر ردیفی رو پاک کنه که باید تمام جدول آپدیت بشه.
شما با استفاده از کوئری ریکرسیو می تونید فقط برگها رو بیرون بکشید.
از اس کیو ال استفاده می کنید؟

khoshblagh
دوشنبه 01 دی 1393, 12:38 عصر
منظورم ترتیب ثبت فرزندان یک پدر . در ثبت ردیف فرزند برای اولین فرزند عدد 1 , فرزند دوم عدد 2 الی آخر ثبت شود.

یوسف زالی
دوشنبه 01 دی 1393, 12:40 عصر
ترتیب که با استفاده از یک Identity در میاد. ضمنا فکر می کنم دوستمون برگ های درخت رو می خواد تا آخرین رکورد رو.
اگر هم آخرین رکورد مد نظرش باشه، راه دیگه استفاده از Row_Number هست نه درج اطلاعات ردیف ها.

pandco
دوشنبه 01 دی 1393, 15:45 عصر
منظورم آخرین رکورد فرزند ثبت شده میباشد میشه یه نمونه مثال بزنید ؟

ممنون

یوسف زالی
دوشنبه 01 دی 1393, 16:17 عصر
ببینید باید برای جدولتون یک فیلد از نوع auto number یا identity بگیرید.
این فیلد یک عدد شمارشی ساده هست که برای هر سطر، یکه هست.


SELECT *
FROM YourTable
JOIN (
SELECT MAX(IdentityFieldInYourTable) SN
FROM YourTable
GROUP BY YourGroupFieldOrFatherSerial
) X ON IdentityFieldInYourTable = SN

pandco
دوشنبه 01 دی 1393, 16:42 عصر
تو هر دو جدولم فیلد autonumber دارم تو کد بالا کدام table1,table2 هستش و شماره پدر کجا استفاده شده ؟

ممنون

یوسف زالی
سه شنبه 02 دی 1393, 17:00 عصر
YourGroupFieldOrFatherSerial دیگه

pandco
چهارشنبه 03 دی 1393, 15:56 عصر
با کد زیر مشکلم حل شد.


SELECT Table1.NuPar,Table1.Name,Table1.LName,Table2.ID,Ta ble2.NuPar,Table2.ChildName From Table1 Inner Join Table2
on Table1.NuPar=Table2.NuPar
Group By Table1.NuPar,Table1.Name,Table1.LName,Table2.ID,Ta ble2.NuPar,Table2.ChildName
Having Max(Table2.ID) = (Select Max(Table2.ID) From Table2 Where NuPar=Table1.NuPa)


با تشکر از همه اساتید