SQL использует вложенный выбор в середине внутреннего соединения - PullRequest
1 голос
/ 09 сентября 2010

Можно ли использовать селект в середине соединения ...

Я пытаюсь сделать следующее:

FROM 
tblorders o 
INNER JOIN tblunits u on o.id = u.orderid
INNER JOIN ((SELECT
                   ,Min(n.date) as [MinDate]
              from tblNotes n
             Where n.test = 'test') te
INNER JOIN tblnotes n on te.id = n.id
                     and te.[MinDate] = n.AuditinsertTimestamp)
INNER Join tblClient c ON o.ClientId = c.Id

В основном в селект в серединеПо запросу выбираются только заметки с минимальной датой.Проблема в том, что мне нужно сделать это здесь, потому что мне нужно от tblOrders быть первой таблицей .......

Предложения?

Ответы [ 3 ]

6 голосов
/ 09 сентября 2010

INNER JOIN не удалось, потому что у вас есть начальная запятая здесь:

,Min(n.date) as [MinDate]

Я думаю, вы ищете что-то вроде этого:

SELECT ...
FROM tblorders o   
INNER JOIN tblunits u on o.id = u.orderid  
INNER JOIN (
    SELECT id, Min(date) as [MinDate]  
    from tblNotes 
    Where test = 'test'  
    group by id
) te  <-- not sure what JOIN clause to use here, please post schema
INNER JOIN tblnotes n on te.id = n.id  
    and te.[MinDate] = n.AuditinsertTimestamp  
INNER Join tblClient c ON o.ClientId = c.Id  
2 голосов
/ 09 сентября 2010

Вам не хватает псевдонима и условия соединения:

FROM 
tblorders o 
INNER JOIN tblunits u on o.id = u.orderid
INNER JOIN ((SELECT Min(n.date) as [MinDate]
              from tblNotes n
             Where n.test = 'test') te
INNER JOIN tblnotes n on te.id = n.id
                     and te.[MinDate] = n.AuditinsertTimestamp)
-- missing
AS z
ON <join conditions haere>
INNER Join tblClient c ON o.ClientId = c.Id
0 голосов
/ 09 сентября 2010

Да, вы можете выбрать в объединении.

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