SQL-запрос для нескольких таблиц / записей

#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. Упс.. Да, я забыл об этом 🙂 Исправление