дана таблица с именем RECORD в MySQL со следующей структурой:MySQL присоединиться к тем же таблицам
rid(pk & AI) patientid(fk) recordTYPE(varchar) recordValue(varchar) recordTimestamp(timestamp)
1 1 temperature(℃) 37.2 2015-08-11 18:10:04
2 1 weight(kg) 65.0 2015-08-11 18:20:08
3 1 heartbeat(bpm) 66 2015-08-11 18:30:08
4 1 temperature(℃) 36.8 2015-08-11 18:32:08
Вы можете видеть, что на ту же дату, может быть несколько записей для одного конкретного типа записи. например температура в данных образца:
rid patientid recordTYPE value recordtimestamp
1 1 temperature(℃) 37.2 2015-08-11 18:10:04
4 1 temperature(℃) 36.8 2015-08-11 18:32:08
В этом случае мы должны выбрать самую последнюю запись. то есть запись со сбросом = 4 и значением = 36,8.
Теперь дана дата ввода, например. «2015-8-11», я хочу, чтобы сделать запрос, чтобы получить что-то вроде:
date patientid temperature(℃) weight(kg) heartbeat(bpm)
2015-08-11 1 36.8 65.0 66
2015-08-11 2 36.5 80.3 70
2015-08-11 3 35.5 90.5 80
..........................................................
..........................................................
2015-08-11 4 35.5 null null
Fig. 2
Кроме того, вы можете увидеть, что для определенной даты, не может быть никаких записей некоторых типов. В этом случае значение в этом столбце равно null.
Я попробовал следующий запрос:
SELECT max(recordTimestamp), patientid, recordTYPE, recordValue
FROM RECORD
WHERE date(recordTimestamp) = '2015-08-11'
GROUP BY patientid, recordTYPE
В результате получается нечто вроде:
date patientid recordTYPE recordValue
2015-08-11 1 temperature(℃) 36.8
2015-08-11 1 weight(kg) 65.0
2015-08-11 1 heartbeat(bpm) 66
2015-08-11 2 temperature(℃) 36.5
2015-08-11 2 weight(kg) 80.3
2015-08-11 2 heartbeat(bpm) 70
2015-08-11 4 temperature(℃) 35.5
Fig. 4
Вопросов:
Учитывая эту таблицу RECORD, что правильная инструкция mysql (в терминах производительности, такой как скорость поиска), чтобы получить желаемый набор результатов (т. Рис.2)?
Будет ли лучше (с точки зрения облегчения запросов и масштабируемости, таких как добавление новых типов записей), если будет изменен дизайн db? , например. Создайте одну таблицу для каждого типа записей вместо того, чтобы помещать все типы записей в одну таблицу.
Любое предложение ценится как я дб новичок ...... Спасибо.
Структура в порядке; это действительно зависит от того, как будет использоваться таблица (как будут получать данные, какие запросы будут выполняться против нее, будут ли они связаны с данными в других таблицах и т. д.); поэтому не может точно сказать, что это лучшее решение, но никаких тревожных звонков. 'recordTYPE' лучше всего заменить внешним ключом, ссылающимся на другую таблицу; таким образом вы уменьшаете размер каждой строки и улучшаете ремонтопригодность. – JohnLBevan