Создать массив с данными из двух таблиц - PullRequest
0 голосов
/ 18 апреля 2019

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

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

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

Я пытался это сделать, но это частично удачно. В таблице отображаются все необходимые данные, однако она не отображает каждую строку из «treatment_paratmers» с параметром_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

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

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

treatment_log

1 Ответ

0 голосов
/ 18 апреля 2019

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...