Как найти среднее значение двух столбцов из разных таблиц с отношением один ко многимPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как найти среднее значение двух столбцов из разных таблиц с отношением один ко многим

Сообщение Anonymous »

Я хочу получить среднее время от одного пациента, к которому он пришел, когда ему проверили первые показатели жизнедеятельности. Это означает, что мне нужно сверить время начала посещения (созданное_at) с созданным_at первой проверки показателей жизнедеятельности (т. е. самых старых показателей жизнедеятельности). Это необходимо для проверки времени ожидания пациента в зависимости от производительности персонала.
Но мой код извлекает все жизненно важные показатели, проверенные для всех пациентов, и усредняет их с учетом всех посещений всех пациентов, а это не то, что мне нужно. .

Код: Выделить всё

$averageFVRTime = DB::table('visits')
->selectRaw('AVG(TIME_TO_SEC(TIMEDIFF(vital_signs.created_at, visits.created_at))) AS averageFVRTime')
->leftJoin('vital_signs', 'visits.id', 'vital_signs.visit_id')
->oldest('vital_signs.created_at')
->whereBetween('visits.created_at', [$shiftPerformance->shift_start, $shiftPerformance->shift_end])
->get()
->first()?->averageFVRTime;
Я попробовал
производительность.
Но мой код извлекает все жизненно важные показатели, проверенные для всех пациентов, и усредняет их по всем посещениям. для всех пациентов, а это не то, чего я хочу.

Код: Выделить всё

$averageFVRTime = DB::table('visits')
->selectRaw('AVG(TIME_TO_SEC(TIMEDIFF(MIN(vital_signs.created_at), visits.created_at))) AS averageFVRTime')
->leftJoin('vital_signs', 'visits.id', 'vital_signs.visit_id')
->oldest('vital_signs.created_at')
->whereBetween('visits.created_at', [$shiftPerformance->shift_start, $shiftPerformance->shift_end])
->get()
->first()?->averageFVRTime;
Я пытался найти минимальное значение столбца Vital_signs.created_at, но он возвращает ошибку 1111 о недопустимом использовании групповой функции.
Я пробовал

Код: Выделить всё

$averageFVRTime = DB::table('visits')
->selectRaw('AVG(TIME_TO_SEC(TIMEDIFF(vital_signs.created_at, visits.created_at))) AS averageFVRTime')
->leftJoin('vital_signs', 'visits.id', 'vital_signs.visit_id')
->oldest('vital_signs.created_at')
->whereBetween('visits.created_at', [$shiftPerformance->shift_start, $shiftPerformance->shift_end])
->havingRaw(MIN(vitl_signs.created_at)
->get()
->first()?->averageFVRTime;
использую метод hasRaw(), но он ничего не возвращает, пустую коллекцию.
Есть идеи, как я могу сделать это с помощью построителя запросов Laravel?< /п>

Подробнее здесь: https://stackoverflow.com/questions/785 ... ne-to-many
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»