Тип JOIN для этого SQL-запроса - PullRequest
0 голосов
/ 30 ноября 2018

Я получаю удовольствие от использования SQL в таблицах Excel, но не могу найти правильный запрос для того, что я хочу сделать.Не могли бы вы указать мне правильное направление, чтобы получить следующий результат?

У меня есть 2 таблицы, к которым я хочу присоединиться:

'Table3'

SN  IN DATE
1   10.09.2018
2   27.08.2018
3   19.08.2018
4   20.08.2018

уникальный серийный номер

'База данных'

SN  REF CREATION DATE   TIMESTAMP
1   AAA 11.09.2018  26.10.2018
1   AAB 11.09.2018  27.10.2018
2   ACF 11.09.2018  27.10.2018
2   CDR 11.09.2018  27.10.2018
3   ODC 11.09.2018  27.10.2018
4   RTF 11.09.2018  27.10.2018
4   IKG 11.09.2018  27.10.2018
4   RNO 11.09.2018  27.10.2018

REF относится только к одному SN

Результат, который я хочу (в свой запрос я включаю больше столбцов, чтобы помочь мнепроверьте результат):

SN  REF
1   AAB
2   ACF
2   CDR
3   ODC
4   RTF
4   IKG
4   RNO

Я хочу, чтобы все REF имели TIMESTAMP = TODAY (в моем примере сегодня 27.10.2018) и IN DATE

Это вопрос, который я до сих пор задавал:

strSQL = "SELECT [Table3$].[SN],[Table3$].[IN DATE],[Database$].[REF],[Database$].[CREATION DATE],[Database$].[TIMESTAMP] " & _
            "FROM [Table3$] " & _
            "LEFT JOIN [Database$] ON [Table3$].[IN DATE]<[Database$].[CREATION DATE]"

Я думаю, что мне нужно СЛЕДУЮЩЕЕ СОЕДИНЕНИЕ, но результат, который он дает мне, не верен.Кроме того, я предполагаю, что ГДЕ для определения значения «сегодня» необходимо.Мне нужна помощь, чтобы построить правильную логику.

Спасибо за чтение.

1 Ответ

0 голосов
/ 30 ноября 2018

С моей точки зрения, этот запрос будет тем, что вы хотите:

strSQL = "SELECT [Table3$].[SN], [Table3$].[ IN DATE], [Database$].[NOTIFICATION NUMBER], [Database$].[CREATION DATE], [Database$].[TIMESTAMP] " & _
         "FROM [Table3$] INNER JOIN [Database$] ON [Table3$].[SN] = [Database$].[SN] " & _
         "WHERE [Table3$].[ IN DATE] < [Database$].[CREATION DATE] AND [Database$].[TIMESTAMP] = Date()"

Я предполагаю, что TIMESTAMP - это поле даты, поэтому я использовал процедуру Date для получения текущей даты.

Я не смог протестировать его, но он должен, по крайней мере, установить вас на правильном пути.

Кстати: интересно, правильный ли здесь пробел перед IN:[ IN DATE].В конце концов, вы использовали это оба раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...