Создать массив, содержащий данные из двух таблиц

Я хотел бы создать таблицу, в которой используются все данные из «параметров лечения» и где параметр_fk=47. Кроме того, таблица также должна включать только количество (*) строк из «treatment_log», гдеmiss_treatment=' '.

Таким образом, таблица должна отображать все данные из «параметров_лечения» с параметром_fk=47 и количеством строк в «журнале_лечения», где «пропущенное_лечение=' '».

Следует также отметить, что: t.id = l.treatment_fk

Я пытался это сделать, однако это частично удалось. В таблице отображаются все необходимые данные, однако в ней не отображаются все строки из «лечения_параметров» с параметром_fk=47. (Должны быть две разные строки)

SELECT t.id,t.parameter_fk,t.course_name,t.room, t.protocol,t.navigation,t.area,t.coil,t.number_of_treatments,t.motor_threshold,t.threshold_multiplier,t.target_threshold,t.about,t.date,t.created_at, COUNT(*) AS completed_treatments 
FROM treatment_parameters t 
LEFT JOIN treatment_log l 
ON t.id = l.treatment_fk 
WHERE t.parameter_fk = 47
AND l.missed_treatment=' '

Ниже вы можете увидеть результат приведенного выше SQL-запроса:

Изображение 1

Однако вы можете видеть, что при изменении SQL-запроса имеется более одной строки для paratmer_fk=47.

SELECT t.id,t.parameter_fk,t.course_name,t.room, t.protocol,t.navigation,t.area,t.coil,t.number_of_treatments,t.motor_threshold,t.threshold_multiplier,t.target_threshold,t.about,t.date,t.created_at 
FROM treatment_parameters t 
WHERE t.parameter_fk = 47

Изображение 2

Таким образом, нам нужно показать обе строки, а также иметь эффект count(*) дляmiss_treatment=' ' для обеих строк.

Ниже вы можете найти весь список из Treatment_log.

Treatment_log

Я не понимаю. Ничто в MySQL не называется "массивом".

Gordon Linoff 18.04.2019 16:57

я обратился к проблеме

user11376228 18.04.2019 17:00

Это все еще не очень ясно. Ваш код запрашивает все строки, где параметр_fk=47 Иmiss_treatment пуст (или, возможно, пробел). Пример и образцы данных помогут нам понять вашу проблему

iainc 18.04.2019 17:09

Это должно «работать», если ваши данные такие, как вы думаете. Поскольку записей так мало, вы можете добавить образцы данных в виде текста к вопросу.

P.Salmon 18.04.2019 17:10

@iainc Я обновил пост, пожалуйста, посмотрите!

user11376228 18.04.2019 17:19

@P.Salmon Я обновил пост, пожалуйста, посмотрите!

user11376228 18.04.2019 17:19

Вы должны добавить журнал лечения - было бы полезно добавить образцы данных в виде текста, с которым мы можем что-то сделать, а не изображений.

P.Salmon 18.04.2019 17:25

Это Sql, а не JavaScript

Joakim Danielson 18.04.2019 17:29
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
8
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, вам нужно самостоятельно присоединиться:

SELECT t.id,t.parameter_fk,t.course_name,t.room, t.protocol,t.navigation,t.area,
    t.coil,t.number_of_treatments,t.motor_threshold,t.threshold_multiplier,t.target_threshold,
    t.about,t.date,t.created_at, aa.t_count AS completed_treatments 
        FROM treatment_parameters t 
        left join (select treatment_fk, count(*) as t_count from treatment_log l
         where l.missed_treatment=' ' group by treatment_fk) aa on aa.treatment_fk=t.id 
        WHERE t.parameter_fk = 47

Это дало следующую ошибку: Неизвестный столбец «l.missed_treatment» в «где пункт»

user11376228 18.04.2019 17:31

Ты великолепен! Работал!

user11376228 18.04.2019 17:34

Другие вопросы по теме