Помогите с Inner Join в связке с несколькими таблицами
#37373828
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
|
|
|
Ребята есть 4 таблицы из которых нужно собрать необходимые данные для пользователя под неким именем
структура таблиц следуйщая :
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
CREATE TABLE CodeReviewRecord
([Id] INTEGER PRIMARY KEY,[Title] nvarchar( 50 ) not null,[Description] nvarchar( 255 ) null,
[SeverityId] int not null,[StatusId] int not null,[OwnerId] int not null,
[AssignedId] int not null,[CreatedDate] datetime not null,
[EditorId] int not null,[ChangeDate] datetime not null,[Resolution] text null);
CREATE TABLE Status
([StatusId] int not null primary key,[StatusName] nvarchar( 30 ) not null);
INSERT INTO [Status] VALUES( 1 ,'Active');
INSERT INTO [Status] VALUES( 2 ,'Failed');
INSERT INTO [Status] VALUES( 3 ,'Fixed');
INSERT INTO [Status] VALUES( 4 ,'Closed');
INSERT INTO [Status] VALUES( 5 ,'Skipped');
CREATE TABLE CodeReviewRecordHistory
([Id] INTEGER PRIMARY KEY,
[CRRId] int not null,[EditorId] int not null,[ChangeDate] datetime not null,[StatusId] int not null,
[Resolution] text null,[SeverityId] int not null);
CREATE TABLE Users
([UserId] INTEGER PRIMARY KEY,[UserName] nvarchar( 60 ) not null,[Password] nvarchar( 50 ) not null,
[ReviewerId] int not null,[LastLoginTime] datetime null,[Role] nvarchar( 50 ) null,
[CreatedDate] datetime null,[SharepointId] nvarchar( 255 ) not null);
Мне надо по определенному (статусу имени и дате ) из таблиц Status , Users,CodeReviewRecordHistory взять данные с таблицы CodeReviewRecord!
насколько корректен будет запрос следуйщего вида(на параметры для даты не обращайте внимание, исп. в ADO.NET):
1. 2. 3. 4. 5. 6. 7.
SELECT CodeReviewRecord.Id,CodeReviewRecord.Title,CodeReviewRecord.Description,CodeReviewRecord.SeverityId,
CodeReviewRecord.StatusId,CodeReviewRecord.OwnerId,CodeReviewRecord.AssignedId,CodeReviewRecord.CreatedDate,
CodeReviewRecordHistory.EditorId,CodeReviewRecordHistory.ChangeDate,CodeReviewRecord.Resolution
FROM CodeReviewRecord INNER JOIN Status On CodeReviewRecord.StatusId=Status.StatusId
INNER JOIN Users ON CodeReviewRecord.OwnerId=Users.UserId AND Users.UserName='Tmp user'
INNER JOIN CodeReviewRecordHistory On CodeReviewRecord.Id= CodeReviewRecordHistory.CRRId
AND CodeReviewRecordHistory.ChangeDate BETWEEN @p1 and @p2
WHERE Status.StatusName='Skipped'
???
Перед этим выполнял инной запрос но он вобще не работал, вернее выдавал не то что надо..
1. 2. 3. 4. 5. 6. 7.
SELECT CodeReviewRecord.Id,CodeReviewRecord.Title,CodeReviewRecord.Description,CodeReviewRecord.SeverityId,
CodeReviewRecord.StatusId,CodeReviewRecord.OwnerId,CodeReviewRecord.AssignedId,CodeReviewRecord.CreatedDate,
CodeReviewRecordHistory.EditorId,CodeReviewRecordHistory.ChangeDate,CodeReviewRecord.Resolution
FROM CodeReviewRecord INNER JOIN Status On CodeReviewRecord.StatusId=Status.StatusId
INNER JOIN Users ON CodeReviewRecord.OwnerId=Users.UserId
INNER JOIN CodeReviewRecordHistory On CodeReviewRecord.Id= CodeReviewRecordHistory.CRRId
WHERE Status.StatusName='Skipped' AND Users.UserName='Tmp user'
AND CodeReviewRecordHistory.ChangeDate BETWEEN @p1 and @p2
|
|