Выберите MAX из нескольких таблиц - PullRequest
1 голос
/ 15 августа 2011

У меня есть четыре таблицы, и в каждой таблице есть столбец даты.Я пытаюсь получить МАКСИМАЛЬНУЮ дату для этих четырех столбцов даты.

    DateTime maxDate = ((from stockIn in db.StockIns select stockIn.StockInDate)
.Union(from stockOut in db.StockOuts select stockOut.StockOutDate)
.Union(from stockC in db.StockClearances select stockC.StockClearanceDate)
.Union(from stockR in db.StockRejections select stockR.StockRejectionDate))
.Max().Value; 

Это самый простой способ?

Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 15 августа 2011

Если так хранятся ваши данные, это довольно просто.

2 голосов
/ 15 августа 2011

Я бы не использовал UNION для этой проблемы, так как запрос может иметь низкую производительность.Объединение 4 таблиц и последующая сортировка (для получения максимума) могут быть очень медленными с большими таблицами.

Либо получите 4 MaxDates из 4 запросов и найдите их максимум в приложении, либо используйте 4 подзапроса, чтобы получить эти 4MaxDates и затем (SQL синтаксис) CASE WHEN или UNION этих результатов (которые будут только 4 строки) и MAX().

Не знаю, как перевести с SQL на Linq-to-sql ...

0 голосов
/ 15 августа 2011

В идеале все ваши акции должны храниться в одной таблице, со связями с другими таблицами, в которых указано, есть ли у вас вход, выход, допуск или отклонения. Тогда вы можете просто сделать МАКС на одном столе.

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