EF Core. Разность строк одной таблицы
От: BlackEric http://black-eric.lj.ru
Дата: 28.06.18 16:14
Оценка:
Есть две таблицы. Мастер — деталь. В детали — число предметов на определенную дату.
Как с помощью EF и Linq посчитать разницу предметов по датам? Т.е. фактически нужно вычесть из сегодняшнего числа вчерашнее. И так для каждой записи мастера. Записей может быть много.
И при этом не положить ни сервер бд ни сервер приложения.
СУБД — MariaDb
https://github.com/BlackEric001
Re: EF Core. Разность строк одной таблицы
От: Слава  
Дата: 28.06.18 17:30
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>СУБД — MariaDb


Ну а как это сделать в самой MariaDB? Она поддерживает подобные операции? Если нет, то у меня есть только одно, колхозное предложение — перевести даты в UTC Unix Epoch, т.е. в int и получившиеся числа уже вычитать, и преобразовывать результат в Timespan руками.
Re: EF Core. Разность строк одной таблицы
От: Danchik Украина  
Дата: 29.06.18 11:14
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>Есть две таблицы. Мастер — деталь. В детали — число предметов на определенную дату.

BE>Как с помощью EF и Linq посчитать разницу предметов по датам? Т.е. фактически нужно вычесть из сегодняшнего числа вчерашнее. И так для каждой записи мастера. Записей может быть много.
BE>И при этом не положить ни сервер бд ни сервер приложения.
BE>СУБД — MariaDb

SQL писать. Ручками. EF Linq, скорее всего загнется или затянет обе таблицы полностью в память. Он для серьезных запросов не заточен.
Если бы дали описание модели, я бы вам linq запрос написал. А так лень.
Да и задача не понятна, какие параметры запроса? Промежуток времени?
Re[2]: EF Core. Разность строк одной таблицы
От: BlackEric http://black-eric.lj.ru
Дата: 29.06.18 12:56
Оценка:
Здравствуйте, Danchik, Вы писали:

D>SQL писать. Ручками. EF Linq, скорее всего загнется или затянет обе таблицы полностью в память. Он для серьезных запросов не заточен.

D>Если бы дали описание модели, я бы вам linq запрос написал. А так лень.
D>Да и задача не понятна, какие параметры запроса? Промежуток времени?

Я уже сам написал. Спасибо.
Но вот что будет на реальных данных со скоростью мне самому интересно.

var result = from t in _db.Histories
join y in _db.Histories on t.CreatedAt.Date equals y.CreatedAt.Date.AddDays(1)
join c in _db.Ch on y.ChId equals c.Id
where t.CreatedAt.Date == DateTime.Now.Date && c.Id == t.ChId
select new
{
Delta = t.Count — y.Count,
Id = t.ChId,
Name = c.ChName
};

https://github.com/BlackEric001
Re[3]: EF Core. Разность строк одной таблицы
От: Danchik Украина  
Дата: 29.06.18 14:28
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>Здравствуйте, Danchik, Вы писали:


D>>SQL писать. Ручками. EF Linq, скорее всего загнется или затянет обе таблицы полностью в память. Он для серьезных запросов не заточен.

D>>Если бы дали описание модели, я бы вам linq запрос написал. А так лень.
D>>Да и задача не понятна, какие параметры запроса? Промежуток времени?

BE>Я уже сам написал. Спасибо.

BE>Но вот что будет на реальных данных со скоростью мне самому интересно.
BE>[q]

SQL лучше показать. Но думаю придется индексы добавлять если их нет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.