#sql
#sql
Вопрос:
Мне нужно создать запрос, который собирает кучу данных для каждого игрока (пользователя) из нескольких таблиц. Например, у меня есть две таблицы: tblMembers
и Off_Ice_Testing
.
Существует несколько off_ice_testing для каждого tblMembers (или ни одного). Как мне выбрать один off_ice_testing с последней датой?
Я пытался:
SELECT m.LastName,
m.FirstName,
office.Date AS [off ice date]
FROM tblMembers AS m
LEFT JOIN (SELECT Date, UserID
FROM Off_Ice_Testing) AS office ON m.UserID = office.UserID
WHERE m.LastName LIKE '%player%'
Но это возвращает запись для каждого Off_ice_Testing
. Если я сделаю Top(1) в производной таблице, это не сработает. Я чувствую, что должен это знать, но я застрял. И для дальнейшего использования, как бы вы назвали этот тип запроса?
Комментарии:
1. Какой SQL вы используете (Oracle или MSSQL)?
Ответ №1:
SELECT m.LastName, m.FirstName, o.[Date] AS [off ice date]
FROM tblMembers AS m
LEFT JOIN
(
SELECT UserID, MAX([Date]) as [Date] FROM Off_Ice_Testing
GROUP BY UserID
)o ON (o.UserID = m.UserID)
WHERE (m.LastName LIKE '%player%')
Комментарии:
1. Аааа, конечно, МАКСИМУМ (Дата). Однако я понял, что вам также нужна группа по идентификатору пользователя для производной таблицы (по крайней мере, для MSSQL). Спасибо!
2. Упс.. Да, я забыл об этом 🙂 Исправление