ПРИСОЕДИНЯЙТЕСЬ к комбинации с ORDER BY - PullRequest
1 голос
/ 13 сентября 2011

Я хочу найти самую раннюю дату в таблице. Как мне вставить это в оператор соединения:

SELECT date FROM table1 WHERE orderno = 222 ORDER BY date LIMIT 1

Orderno 222 может иметь 1- * много строк в table1, поэтому я использую LIMIT 1

У меня есть таблица этих таблиц:

Заказать OrderLine ProductionDate

Заказ может иметь 1- * ProductionDates, поэтому, когда я присоединяюсь к ProductionDate, я хочу найти самую раннюю дату.

Так что мое предположение о выражении sql будет примерно таким:

SELECT * FROM Order
LEFT JOIN (
IN SELECT date FROM ProductionDate ORDER BY date ASC LIMIT 1)

но это не работает. И я хотел бы знать, что я должен изменить, чтобы заставить его работать?

Ответы [ 2 ]

2 голосов
/ 13 сентября 2011

Я не уверен, что MySQL поддерживает LIMIT в производной таблице, но если это так, синтаксис должен быть:

SELECT ord.*
FROM `Order` ord
  LEFT JOIN (SELECT date FROM ProductionDate ORDER BY date ASC LIMIT 1) t
       ON t.date = ord.date

Обратите внимание, что order является зарезервированным словом, поэтому вам нужно будет правильно его процитировать. Либо с использованием страшных обратных символов MySQL (см. Выше), либо - если вы настроили свой сервер на соответствие стандарту - используйте двойные кавычки, например: "order"

0 голосов
/ 13 сентября 2011
SELECT `date` 
FROM `table1` 
INNER JOIN `table1`.`date` ON `table2`.`date`
ORDER BY date ASC LIMIT 1

Это то, что вы имеете в виду?

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