PDA

View Full Version : join



ghaum
یک شنبه 27 دی 1383, 08:06 صبح
سلام
آیا می شود که یک جدول را با خودش join کرد
چگونه؟


خیلی متشکرم

qazwsxedc
یک شنبه 27 دی 1383, 10:45 صبح
سلام
آره می تونی این کار رو انجام بدی به اینصورت که مثلا اگه table داری به نام x که سه تا فیلد داره رو در قسمت select به جای ستاره نام یک فیلد رو بزاری ودر خط دستوری بعد اونو بریزی توی یک جدول دیگه مثلا x1 که در حقیقت همون x هست ولی فقط یک فیلدش بعد x و x1 رو مجدد با هم join کن

vadood
یک شنبه 27 دی 1383, 10:56 صبح
بلی،

به همان ترتیبی که با جدول های دیگر Join می کنی



SELECT * FROM People P1 LEFT JOIN People P2 ON P1.ID=P2.ReportsTo WHERE P1.ID = 10


مثال بالا همه کارمندانی که باید به کارمند با ID=10 گزارش دهند را نشان می دهد.

ghaum
یک شنبه 27 دی 1383, 20:36 عصر
سلام

خیلی متشکرم
ولی مشکل من حل نشد

ببینید من یک جدول دارم که لیست کتابها به همراه موضوع و تاریخ انتشار آنها ذخیره شده است
حالا می خواهم کتابهایی را انتخاب کنم که در هر موضوع آخرین تاریخ انتشار را داشته باشند


خیلی ممنون

AminSobati
یک شنبه 27 دی 1383, 21:12 عصر
دوست عزیزم،
در حقیقت شما باید خود جدول رو با یک Sub Query از خودش Join کنین.
با فرض به داشتن این اطلاعات:

CREATE TABLE Books(
BID INT IDENTITY(1,1),
Title NVARCHAR(200),
SubjectID INT,
PublishDate DATETIME)

INSERT Books(Title,SubjectID,PublishDate) VALUES ('Title One',1,'1/12/2005')
INSERT Books(Title,SubjectID,PublishDate) VALUES ('Title Two',1,'1/13/2005')
INSERT Books(Title,SubjectID,PublishDate) VALUES ('Title Three',2,'1/4/2005')
INSERT Books(Title,SubjectID,PublishDate) VALUES ('Title Four',2,'1/10/2005')
INSERT Books(Title,SubjectID,PublishDate) VALUES ('Title Five',2,'1/11/2005')
INSERT Books(Title,SubjectID,PublishDate) VALUES ('Title Six',3,'1/5/2005')
میتونین به این شکل Query بگیرین:

SELECT B.Title, New.PDate FROM Books B INNER JOIN
(SELECT MAX(PublishDate) AS 'PDate',SubjectID FROM Books GROUP BY SubjectID) New
ON B.PublishDate=New.PDate AND B.SubjectID=New.SubjectID
موفق باشید

ghaum
دوشنبه 28 دی 1383, 18:33 عصر
سلام

خیلی متشکرم از شما

AminSobati
یک شنبه 04 بهمن 1383, 12:45 عصر
موفق باشید :)