2016-03-24 1 views
0

Макс/мин выберите ниже работает отлично, но я хочу также присоединиться к таблице № 3 на EntityCode (т.е. обеспечить EntityName)SQL Server MAX и MIN из 3 таблиц

Однако, я не уверен, является ли вложенное выбор или несколько объединений является маршрутом:

SELECT 
    Orders2Buy.EntityCode, 
    MAX (Orders2Buy.Bid), 
    MIN (Orders2Sell.Ask) 
FROM 
    Orders2Buy INNER JOIN Orders2Sell ON Orders2Buy.EntityCode = Orders2Sell.EntityCode 
GROUP BY 
    Orders2Buy.EntityCode) 

------- СОЧЕТАНИЕ С -------------------

SELECT 
    Entities.EntityName 
FROM 
    Entities 
WHERE 
    Entities.EntityCode = Orders2Buy.EntityCode; 
+0

Посмотрите на это [вопрос] (http://stackoverflow.com/questions/14184268/nested-selects-or-joins) – DCruz22

ответ

2

Я думаю, что нормальное соединение будет прекрасным.

SELECT 
    Orders2Buy.EntityCode, 
    Entities.EntityName, 
    MAX (Orders2Buy.Bid) Bid, 
    MIN (Orders2Sell.Ask) Ask 
FROM 
    Orders2Buy 
     INNER JOIN Orders2Sell ON Orders2Buy.EntityCode = Orders2Sell.EntityCode 
     INNER JOIN Entities on Entities.EntityCode = Orders2Buy.EntityCode 
GROUP BY 
    Orders2Buy.EntityCode, Entities.EntityName 

Это вы что искали?

+0

Спасибо, я не знал, чтобы поставить вторую группу, так что не смог получить это работать. FWIW I (теоретически) не понимаю, почему второе предложение необходимо, если у вас есть простой для понимания ответ. –

+0

Это правило SQL. И это имеет смысл, если вы думаете об этом. Если вы хотите сделать совокупность, вам необходимо агрегировать значения на основе общей вещи, которая может быть одним полем или группой полей. В противном случае SQL не знает, как объединить все вместе. Результат MAX (Orders2Buy.Bid) GROUP BY Orders2Buy.EntityCode предоставит вам только максимальную ставку на основе консолидированного EntityCode. – Licantropo

Смежные вопросы